秋招结束-迟到的面经总结
投递250+(官网投递200家左右),笔试60+场,面试21家(还有一些拒掉的和没记录的,面试机会应该有30+)
有面试机会的都是中小厂。
下面是自己记录的一些东西和一部分面经。自我介绍部分每次都要说,然后自己结合自己的简历提前准备好,然后每次都差不多,可能技术面和hr面稍微改动一下。
还有hr面一些高频被问的问题,没准备过真的不太好回答,所以以提前准备,结合自己经历演练好,遇到了就能很快回答出来。还有每次面试完的反问部分也一样,最后还有一点面试小技巧。
中间的就是有记录的一些公司的面经,很多都没录音,可能不太全。
自我介绍
每次的自我介绍大概就说这些东西
- 个人信息
- 项目
- 课程、绩点排名、岗位
HR面常见问题
- 为什么不考研
- 压力最大的事,怎么解决
- 最有挑战性的事
- 最有成就感的事
- 优缺点
- 几个关键词形容自己
- 为什么没实习
- 职业规划
- 怎么看待加班
- 期望薪资
反问
部门业务、技术栈
晋升路线
新人培养
团队氛围
实习
应届生的建议
还有面试中没打出来的问题
一个小公司
- SpringMVC
- BeanFactory和ApplicationContext
- 动态代理
- 牛客社区怎么做的日志
- Bitmap和hyperloglog
长安汽车
hr面
线下
- 了解长安汽车吗
- 让你增加一个新的功能给汽车,你会增加什么
- 优缺点
二面
总共十来分钟,全程聊天,面试官不是搞Java的
- 汽车三电是什么
满帮
一面
- HashMap
- caffeine缓存淘汰算法
- ES相关知识
- 分布式缓存
- 二级缓存
- 双亲委派
- JVM内存模型
手撕:IP地址那个(回溯,力扣原题)
hr面
- 你们相当于大学期间都处于疫情,这三年对你最大的改变是什么
- 为什么不考研
- 为什么没实习
三面
- 介绍项目难点
- 说了前缀树(忘记说改进了)、二级缓存、ES(说了数据一致性问题)
- 介绍Spring项目遇到的难点,怎么解决的
- JVM内存结构
- 垃圾回收算法
- 挑一个MySQL自己熟悉的地方说一说
猫眼
一面
- 三次握手,每次握手都有啥用
- 死锁,预防死锁的方法
- HashMap、ArrayList、HashSet源码
- JVM内存结构
- 怎么操作本地内存
- 垃圾回收器
- 执行一条SQL语句的执行流程(Server层)
- undo log
- SQL题
手撕:反转链表2
同花顺
一面
- HashMap(put和get,主要是hashcode和equals())
- JVM内存结构
- 怎么判断要不要回收(引用计数、可达性分析)
- 垃圾回收算法(四种)
- AOP中两种动态代理方式(JDK、CGLIB动态代理)
- 事务
- 讲了事务隔离级别、特性、MVCC
手撕:两数之和
场景题:怎么实现搜索的时候自动补全功能
二面
- 什么时候开始使用的ES这些中间件
- 自己搭建过ES吗,用了几个节点(忘记是不是这个了)
- ES遇到了什么问题,介绍一个分词插件,分词插件有哪些缺点,怎么解决
- 零拷贝
- 看过这些源码学到了哪些东西(bit(ES、布隆过滤器、caffeine,bitmap)、概率)
- 最近学什么
- 缓存淘汰算法(LRU、LFU(优缺点忘记了))
- 压力最大的事
手撕:二维递增子数组
hr面
- 最有成就感的事
- 优缺点
- 成绩
青书
一面
- 哪个项目帮助最大?
- 项目中遇到的问题(ES哪个冲突)
- ES底层实现
- 有没有优化过(回答加过索引,但是效果不好,就没弄)
- 然后一直挖怎么加索引的,回答用联合索引,然后索引失效...
- 问explain返回的结果准吗,问聚簇索引和非聚簇索引
- 泛型,真假泛型、泛型擦除机制(不知道)
手撕:类似topK,需要需处理一下数据(用的Hash表+堆排序)
富途
一面
- 怎么看待客户端开发
- 仿Spring框架项目中最重要的东西(IOC容器)
- Java内存模型、类加载器、类加载过程、垃圾回收过程(两种判断方法,和4种回收算法)
- 线程、进程(是什么、区别、为什么要线程)
- 从url到页面展示过程从网络层次方面回答
- 线程池(一点都不会)
- 反射怎么实现的,性能问题
- 泛型(假泛型、灵活、泛型擦除机制)
- 怎么处理异常
智力题:烧绳子
手撕:括号生成(用的动态规划时间复杂度比较高)
深信服
一面
- 双亲委派机制
- ArrayList底层实现
- Spring项目中最核心的东西:IOC
- AOP是什么,怎么实现
- 观察者模式
- 项目中遇到了什么问题(ES和Redis冲突)
- 压力测试
- 平时怎么调bug,有没有使用什么工具(打断点、二分法注释)
- 前缀树
手撕:合并两个有序链表
二面
- 讲技术交流社区的架构(让按模块讲)
- 注册功能、前缀树
- 问ES的底层实现(讲的很好,然后问我为什么看过写)
场景题:搜索场景,很大的数据量,怎么快速出现结果(ES,bit类型的哈希表(类似布隆过滤器),缓存,削峰、缓存过往的浏览记录,用户画像推测喜欢的商品)
hr面
- 最有成就感的事
- 用三个关键词形容自己
- 最有挑战性的事
- 为什么没实习
讯飞
一面
- 点赞功能的key和value是什么?
- ES代码,怎么分的document...?(问了他很多代码相关的东西)
- 怎么给一个ArrayList去重(口述代码)
- mybatis的#和$又什么区别
- 删除一张表里所有的数据
- 事务的隔离级别
- 本地缓存和二级缓存的一致性问题怎么解决
七宝机器人
一面
- HTTP的请求过程
- 有了IP地址为什么还要MAC地址
- 对称加密和非对称加密
- TCP协议和UDP协议使用场景
- 粘包怎么办
- 什么是数据结构,逻辑结构和物理结构,逻辑结构有几种
- 空间换时间怎么理解
- 并发和并行
- 进程的调度算法
- 进程和线程的区别
- 死锁是怎么产生的
- 池化技术
- JVM的内存模型,堆里放的什么,方法去放的什么,静态变量放哪里,对象什么时候回收,怎么判断两种方法,
- 类加载过程
- 调优工具了解过吗
- 数据库什么时候会发生死锁
- 前端调用后端接口时后端响应非常慢,怎么处理,分析过程,怎么排查
- 三个场景判断哪个查询快;数据库中查出1w条数据使用,1w条数据和其他表有关联,a.1w条数据在一个for循环中查;b.关联查询,直接返回;c.在for循环中执行1w次SQL语句查
- MySQLCPU飙升怎么办,有哪些情况会出现飙升
- 数据库中,数据变化了,怎么让代码及时响应
- utf8和utf8-mb4有什么区别
- 设计表的时候,使用int(20)是什么意思
- MySQL事务
- Redis基本数据类型
- 为什么Redis比MySQL快,为什么不把所有的数据都放到Redis中
- Redis怎么做持久化
- Redis内存满了怎么办,Redis缓存淘汰算法,默认的是什么
- 缓存穿透
- 怎么保证Redis和MySQL的一致性,什么时候可能出现数据不一致,延时双删
- ES怎么修改索引的字段类型,ES中已经存了100w数据,将int类型改成String类型,怎么改,不支持修改,取出来重新建索引,重新放进去;
- ES默认一次只能查多少条数据,1W条,多的话要使用游标
- ES慢,怎么优化,文档是以什么形式保存的(Json序列化),子文档类型
- Spring boot怎么实行啊定时任务
- Spring Boot的核心注解,SpringbootApplication介绍一下,包括了哪些注解
- spring boot支持哪些日志框架
- 怎么实现了日志功能,怎么配置的
- 线程池中,最大线程数和核心线程数有什么区别,最大线程数用来干啥
- 队列满了怎么办,超时时间是啥
- 默认饱和策略是啥,饱和策略
- 可以把队列设置的很大吗,是不是越大越好
- 提交线程池的方式有哪几种,有什么区别,为什么一个有返回值,一个没有,通过什么机制实现的线程的实行啊方式Runnable,和Callable
- 多线程之间的变量如何做到独立
- synchronized能不能锁字符串,String s = "abc",synchronized加上之后,还能不能有”abc“;锁的什么东西,锁的地址吗?
- 怎么把字符串放在字符串常量池
- 消息队列中来干啥,解决了什么问题
- 消息队列中有100w数据来不及处理了怎么办
二面
- IP地址和MAC地址的寻址区别
- 路由器需要实现哪些协议
- 什么是IP协议
- 浏览器输入URL到响应
- 什么是URL
- 统一资源定位符由哪些组成
- TCP的状态、HTTP的状态,怎么理解
- HTTP协议请求和响应分别包含哪些部分
- 解释一下操作系统的零拷贝,Linux如何实现零拷贝
- 计算机的I/O模型
- 哈希协议,hashcode和equals()
- 泛型,泛型数组和泛型集合存放子类可以吗
- 怎么学习Redis,用过哪些数据结构,zset的API
- Redis事务,事务的四个特性,Redis支持事务吗,Redis的四个特性能满足吗,Redis持久化方式,Redis的批量提交
- 事务的隔离级别
万邦
一面
- 为什么不考研
- TCP的连接和断开,为什么是3次握手,能不能是2次
- cookie和session的区别
- 死锁产生的条件
- 实现一个URL缓存,怎么实现,用什么数据结构
- 代理模式,应用场景
- 类加载过程
- Spring的依赖注入有哪一种方式
- Spring Boot自动装配
- 做这些项目的收获
- Kafka怎么保证消息的准确性
- 数据一致性问题,Redis和MySQL的数据一致性
- 什么时候更新点赞数量个评论量
- Redis的使用场景
- 缓存失效了怎么办
二面
- 自我介绍
- 充电桩、云平台、用户,这三端在整个系统中需要考虑哪些问题
- Kafka怎么保证消息的可靠性;自动提交,自动
万得
一面
- 说一下前缀树这种数据结构,查询的时间复杂度,查询的过程
- 为什么用ES做搜索功能,为什么ES很快
- Kafka异步双写什么意思
- Java中HashMap和TreeMap由什么区别,时间复杂度
- 为什么用红黑树实现,不用平衡二叉树
- 什么是聚簇索引,什么是非聚簇索引
二面
- 技术交流社区项目比较好的点
- ES的数据一致性,Redis和MySQL的数据一致性
- 怎么保证发送消息的顺序性(ES异步双写同步数据时,如果修改了两次怎么保证这两次的顺序性)
- Spring的三级缓存
- 什么是缓存穿透,怎么解决
- 如果删除一条数据后,怎么解决,布隆过滤器怎么解决,可以删除吗
龙盈智达
hr面
了解个人基本信息
二面
两个面试官,20分钟左右
- 为什么用Kafka做消息队列,为什么要用到消息队列,什么场景用消息队列
- 介绍了ES的数据同步,问写入数据库是不是放在Kafka中,是,db压力是不是太大?
- 怎么处理ES和MySQL的数据不一致
- 怎么理解IOC容器,为什么要用到依赖注入
- Redis二级缓存,怎么处理缓存击穿
鼎信
一面
- Spring项目中遇到的问题
- 一般遇到问题的解决思路
- 介绍一下Java关键字static,理解
途虎
一面
- 介绍一下前缀树,如果有100w条数据怎么优化内存空间
- 手写前缀树
- ES中match和term的区别
- ArrayList的扩容机制,如果初始化大小是23,放50个元素,最后数组的真实大小是多少
- InnoDB中索引的数据结构
数美
一面
- 项目从头到尾讲一遍,各个细节点提问
- JVM内存结构
- 垃圾回收过程
- TCP/IP协议,三次握手,四次挥手
- Redis一些基础,缓存雪崩、击穿、穿透,解决方案
手撕:反转链表(两种实现方式,递归和迭代)
二面
- 问项目里的前缀树,时间复杂度等等
- 手写实现前缀树
- ES搜索出来排序规则,如果你来实现一个排序规则怎么实现
- 怎么理解IOC,为什么Spring需要抽象出这个东西,能解决哪些问题
- 加了二级缓存,用什么做的压力测试,评判标准,最重要的指标等等各种细节点的提问
- 什么东西能衡量QPS,你怎么理解QPS的
- 要压测到3000QPS,平均响应时间是100毫秒,用多少了线程压才行(完全不懂,瞎说)
- 职业规划,你怎么理解技术专家,怎么理解架构师
hr面
- 遇到的压力最大的事,怎么解决
- 说几个自己的特质
紫光同芯
一面
三个面试官,一个hr和两个技术,hr也问了一些问题,这里没写
- 面向对象的特点,静态动态多态
- 介绍一下泛型
- 设计模式你知道哪些,我说了一些项目中用的,然后让都介绍一下(单例、模板方法、工厂)
- 为什么项目中用到了单例模式
- 介绍一下Spring的各个模块(我有个项目是手写Spring)
- 了解哪些数据结构,都介绍一下
- 介绍一下JVM的内存结构
- 垃圾回收过程
二面
两个面试官,hr和技术
- 介绍一下Spring项目
- 死锁
- ArrayList和LinkedList
- HashMap底层