本文主要用于记录我的秋招面经集合,顺便将暑期实习时的面经也贴出来。部分公司的面经记录不全,将记录过的全部贴出来,希望对大家有用。更多资料分享请假微信:pcwl_Java,或者关注微信公众号:码农求职小助手。
第一篇:Java 转行之路
第二篇:Java 面试必备知识点
第三篇:秋招面经集合
因为我有过两段校企合作项目和两段互联网实习经历,所以每次面试基本上都是项目和基础知识花费的时间各占一半。这也说明了项目和实习的重要性,如果没有项目和实习,那么只能抗住面试官同样时间里对基础知识的狂轰乱炸了。
先说下我秋招和暑期实习投递情况:
-
秋招
百度提前批:口头offer
字节跳动:意向书
拼多多:实习申请转正
顺丰科技 sp 专场:意向书
滴滴出行 sp 专场:二面挂
虾皮科技 sp 专场:二面挂
腾讯:面试中
美团:面试中
-
暑期实习
腾讯 TEG:实习 offer
拼多多:实习 offer
爱奇艺:实习 offer
华为 CloudBU:实习 offer
思科大数据部门:实习 offer
阿里:二面挂
蘑菇街:二面挂
有赞:二面拒面
一、字节跳动
一面
1、进程与线程的区别?进程更耗费资源,具体指的是哪些资源?
2、有哪些情况下可能发生死锁?
3、线程间通信方式?进程间通信方式?
4、手写代码:连续子数组最大和
5、说一下对 HTTP 协议的理解
6、怼项目
二面
1、UDP 和 TCP 的区别?
2、数组建堆的过程
3、手写代码:二叉树的层序遍历,每一行对应一层
4、MQ 和 Redis:Kafak RabbitMQ w宽泛的自己讲一讲,在什么场景下会使用到?
5、垃圾回收:自己讲随便讲
6、类加载机制
7、怼项目
8、自己怎么实现一个 HashMap
9、三次握手、四次挥手、为什么需要四次?
三面
1、重载和重写的区别?
2、数组和链表的区别?
3、HTTP 的状态码,304 具体是什么错误?详细说
4、手写代码:单例模式(双重校验锁+静态内部类)
5、项目:分布式事务,可靠消息
6、Linux 的命令 lsof( 列出当前系统打开文件的工具)、问了一堆不会的指令
7、目前 offer 情况
8、自己的优缺点
二、百度
一面
1、自我介绍
2、怼项目:问项目细节、项目扩展:redis 、kafka
3、线程与进程
4、HTTPS 的流程、加密算法
5、主线程怎么收集子线程执行的结果?
6、手写代码:二叉树的序列化和反序列化
二面
1、自我介绍
2、项目介绍、可靠消息实习分布式事务
3、垃圾回收:运行时数据区、垃圾回收算法、垃圾回收策略
4、手写代码:二分查找、KMP
5、线程池参数、线程数的设置
6、HashMap 的扩容过程
7、ConcurrentHashMap 的实现原理
三面
1、自我介绍
2、各阶段项目描述 + 项目扩展问题
3、最有成就感的一个项目,为什么?
4、浏览器实现 url 提示的数据结构
5、Trie 树和二叉树的区别?
6、TCP 和 UDP 的区别?
7、TCP 怎么保证可靠传输?
8、后面进入 HR 模式,各种优缺点、未来选择问题
三、滴滴出行
一面
1、自我介绍
2、挑一个项目介绍下、项目亮点、难点
3、A 往 B 发一个消息:从五层网络架构分析下这个过程
4、TCP 能有多少个连接?
5、vachar 字段非常大,数据库怎么进行优化存储
6、简单说下数据库的架构
7、SpringMVC 处理前端请求的流程
8、类加载各阶段的作用
二面
1、自我介绍 + 项目(简单描述:滴滴 + 拼多多)
2、类加载器有哪些?
3、怎么实现自定义类加载器?需要注意什么事项?
4、Java 内存数据区
5、public static final 分配在哪?
6、垃圾回收策略
7、CSM 和 G1
8、UDP 和 TCP 的区别?
9、HTTP 的过程:输入一个地址访问后的过程
10、HTTPS 的过程、服务端伪造怎么处理,怎么知道是不是真正的服务端?CA 证书行不行?
11、锁:悲观锁和乐观锁:有什么区别?
12、设计模式:宽泛的说了下知道哪些
13、实现多线程的几种方式
14、怎么实现固定大小数目的线程池?
15、线程池的 7 个参数、饱和策略
16、HashMap、HashTable、ConcurrentHashMap 的区别
17、怎么实现动态代理?
18、Java 中序列化是什么?描述下一台机器将一个对象插入数据库,另一台机器读这条数据,这个过程中用到的序列化和反序列化的API
19、Java 中的 IO 流:简单介绍了字节流和字符流
20、父线程怎么收集子线程的信息
21、简单说下对 ThreadLocal 的理解?
22、写代码:Java 最快的方式读写文件:快速的读取一个文件中的内容,再输出到另外一个文件
23、扩展:设计一个高并发、大数据量的系统,会从哪几个方面入手?
四、顺丰科技
一面
1、自我介绍
2、用过哪些集合类
3、怼项目:
-
怎么优化请求的响应时间?
-
dubbo 可以做链路追踪吗?
-
服务的循环调用问题?
-
定时任务做关团,怎么处理?
4、算法:输入 n 瓶啤酒,每两个空瓶子可以换 1 瓶酒,每四个瓶盖可以换一瓶酒,最后可以喝到多少瓶酒?
进阶:如果可以和店家借啤酒,那么可以喝到多少瓶?
5、文档问题:开发最后阶段,产品提出新的需求,该怎么办?
二面
1、项目中遇到的问题,怎么解决?
2、ConcurrentHashMap 的实现原理
3、Java 线程池的核心参数
4、Java 内存模型
5、HTTP 和 HTTPS 的区别?
6、分布式事务的实现方式
7、两阶段提交和三阶段提交
8、设计一个秒杀系统,应该从哪些方面进行性能优化?
HR面
1、职业规划
2、薪资期望
3、优缺点
4、身边朋友、老师的评价
5、目前的 offer
6、家庭成员情况
五、虾皮科技
一面
1、算法题:说思路 --> 怎么找到一个数组中的最小值?
2、手写算法题:两个为 String 类型的数组相加?
3、HTTP 简单说下:说了方法、状态码
4、HTTPS 加密的过程,对称加密和非对称加密
5、TCP 有什么特点
6、操作系统内存管理
7、进程和线程的区别 各有什么优点?
8、Java 中的 ConcurrentHashMap 的实现?
9、加锁会有什么问题?怎么解决死锁?
10、volatile 的实现,有什么作用?内存屏障怎么实现的?读内存屏障和写内存屏障有什么区别?
11、数据库的索引有什么用?怎么实现的?
12、数据库的事务,分别问了脏读、幻读、不可重读对应的场景
13、联合索引有什么特点
二面
1、自我介绍
2、项目:做了什么
3、volatile 怎么实现内存可见?为什么没有volatile就不可见,操作系统层面是怎么实现的?
4、HTTPS 和 HTTP 的区别、HTTPS 的加密过程,加密算法
5、逻辑题:100个苹果分到7个篮子里,随便输入一个数(1-100)都可以是若干个篮子中苹果的数量和
6、老师和同学对你的评价?优缺点?
7、对虾皮的认识
8、对未来公司的定位
六、腾讯
一面
1、自我介绍
2、项目介绍:学校的项目和实习的项目都问了,项目中的难点,亮点。
3、实习学了哪些新技术,都怎么用的?
4、同步、异步、阻塞、非阻塞
5、长连接和短连接、应用场景、keep-alive
6、项目中并发的场景,怎么设计的(实习是电商系统,做了一些下单页、订单详情类似的需求,所以问了其中的一些并发设计场景)
7、反问问题
二面
两道算法题:
-
第一题:
-
第二题:
七、美团点评
一面
1、自我介绍
2、介绍拼多多的下单页满返提示的需求
3、提到下单页是利用线程池做并发查询,问:主线程怎么收集子线程的信息、这个过程都有哪些方法,线程池参数怎么设计
4、订单详情有没有缓存,怎么做的?
5、订单详情中如果出现并发查询模块出现依赖关系怎么办?
6、分布式事务:可靠消息
7、线上一台机器出现 OOM 问题,怎么样的排查问题?第一步要做什么?是要重启机器吗?
8、动态代理、装饰者模式 区别、文档目录用什么设计模、Spring 中的设计模式
9、前段请求到 SpringMVC 的 Controller 返回 4xx,这时参数还没有到你写的 Controller ,可能会是哪些原因?可能是要问框架中的一些处理
10、HTTP 的一些特点、长连接、短连接
11、为什么现在很多应用都用 HTTP 而不是 Socket?
12、类加载机制:两行代码都是 new 一个对象,第二行代码执行过程和第一行比有什么区别?
13、依赖的 jar 包,报 ClassNotFoundExecption 可能的原因有哪些?
-
一面是电话面,因为暑期在上海实习,HR 约二面现场面,拒面了,希望安排远程面试,现在也没安排。
八、拼多多
一面
1、笔试题复盘
2、TCP 的三次握手和四次挥手
3、进程和线程的区别?
4、进程间通讯的方式?
5、同步、异步、阻塞、非阻塞各代表什么意思?
6、垃圾回收方式?从运行时数据区 --> 可达性分析 --> G1 -- > 垃圾回收策略
7、为什么要分代?
8、前端请求比较多的时候后端怎么做?类似于秒杀。
9、手写代码:一个数组:{1, 2 ... , 49, 50} 怎么实现这个数组中的数据随机等概率输出?
二面
1、实习项目:问的很细节,然后扩大项目中的数据量,优化策略
2、布隆过滤器
3、TCP 和 UDP 的区别
4、TCP 怎么保证可靠传输
5、首部校验和算法
6、拥塞控制
HR面
1、兴趣爱好
2、未来工作城市的选择?
3、对自己前两轮的面试的自我感觉怎样?
4、最大的优点是什么?最大的缺点是什么?
5、能够实习多长时间?
6、能够接受加班吗?
7、未来的职业规划是什么?
九、爱奇艺
一面
1、Java 内存模型?如何保证线程安全?
2、volatile 底层是怎么实现的?volatile 怎么禁止指令重排?
3、Synchronized 的底层实现,与 ReentrantLock 的区别?
4、创建线程池有哪些构造函数,其实就是问有哪些参数
5、CyclicBarrier 并行计算的实现
6、Atomic 是怎么做到线程安全的,我说的是 CAS,面试官说最好回答 Atomic 类的 CAS 整个操作是一个原子操作
7、编译期优化的发生时机
8、用过哪些数据库?聚簇索引、B+ 树原理、MVCC 原理
9、数据库中事务的隔离级别,会发生什么问题
10、设计模式:工厂方法模式主要角色+思想、代理模式(用过没,源码里看过没?Spring AOP 动态代理 CGLIB)
11、Spring 中的事务,为什么要有事务?为什么要设置不同的隔离级别?为什么事务要有传递性?自己的项目中是怎么处理事务的?
12、TCP 三次握手,标志位值要说清楚
13、问我怎么学的数据结构?
14、问 Linux 操作怎么样?回答还可以,然后也没问了,就让我问问题了
二面
1、介绍自己的项目
2、项目难点
3、Java 垃圾回收机制、G1/CMS
4、怎么监控垃圾回收情况?
5、怎么监控线程运行情况?
6、线程池有几种创建方法?
7、线程池的饱和策略有哪些?
8、Java 中的锁有哪些?Lock 和 Synchronized 的底层实现分别是什么?
9、SpringMVC 的入口类是什么?答:DispatcherServlet --> 这个类里面做了哪些优化处理 --> 答:没看过源码
10、Spring 事务的隔离级别,还问了一个 Transactional 注解里面的实现,忘了 --> 没看过看源码
11、用过分布式没?--> 用过,没看过源码
12、消息队列有哪几种?用过哪些?答:用过 ddmq(kafka + rocketmq),
。问:topic 和 queue 形式的区别?
13、分布式缓存用过没?答:懂一点 redis,问 redis 使用场景和redis的持久化方式
14、实习期望做什么?
15、让问他问题:问了招聘要求中的一个点和实习转正情况
十、蘑菇街
1、集合 Map 的一些实现类
2、怎么实现线程安全的 HashMap?
3、LinkedHashMap 的原理和使用场景【LRU】
4、Spring AOP 的原理
5、上面问题说到了动态代理,所以问我除了Java原生的动态代理方式之外,还有哪些实现方式
6、SpringMVC 处理请求的流程
7、滴滴实习内容
8、redis 怎么实现分布式锁?
9、redis 怎么保存缓存和数据库的一致性问题?
10、由于上题中提到了事务机制,面试官问从数据库底层的事务机制考虑,怎么实现缓存和数据库一致性问题?
11、RPC 接口怎么暴露出去?设计一个 RPC 接口调用,有哪些方式?
12、主键索引和非主键索引的区别?
13、MyBatis 的一级缓存和二级缓存,是不是所有查询都走缓存,会有什么问题?
14、比赛:三局两胜和五局三胜哪个胜场更高
十一、有赞
1、对 Java 集合类进行简述,挑几个源码说。ArrayList 和 LinkedList 的使用场景
2、如果一个对象作为 HashMap 的 Key,需要注意什么?
3、为什么要将 String 设置为不可变类
4、String 类的 hashCode() 方法
5、JDK 动态代理
6、Java 中的锁有哪些?可重入锁是什么意思?悲观锁和乐观锁的使用场景
7、Java 的序列化
8、Java 的 IO 流
9、Java 里的异常?final、finally、finalize 的区别?finally 里的方法一定会执行到吗?如果catch里有return,什么情况下执行不到。
10、怎么判断哪些垃圾是要回收的?
11、类的运行时数据区各部分介绍
12、类加载机制,各个阶段说明
13、线程的状态及其转换
14、sleep 和 wait 的区别?
15、线程池的使用有什么好处?7 个参数的意义解释
16、CAS 算法
17、怎么理解线程安全这个问题?
18、Syschornized 和 Volatile 的底层怎么实现的?
19、CopyOnWriteArrayList 的底层以及会带来什么问题?
20、设计模式:用过哪些设计模式?或者 JDK/Spring 源码中有哪些?
21、四次挥手过程
22、滑动窗口
23、HTTP 协议:301 和 302
24、Cookie 和 Session 的区别
25、SQL 的注入攻击?怎么预防?
26、Linux 的常用指令:自己说
27、学过哪些持久层框架?Mybatis 和 Hibernate 的区别是什么?
28、Mybatis 中的 ResultMap 和 ResultType 各代表什么意思?
29、MyBatis 有哪些执行器?
30、记不清了:问了一个 Mybatis 分页的东西,没听过的一个东西
31、SpringBoot 学过吗?没有
32、最左前缀原则
33、怎么优化查询
34、除了所以之外,还有其他优化方法
35、有没有设计过表?
36、怎么将一个日志文件拆分成十个日志文件?每条日志有时间?
37、怎么实现限流?
38、redis 的单线程问题
39、redis 怎么实现分布式锁?自己设计的话会怎么实现?
40、redis 的预热缓存是什么?缓存穿透是什么意思?
41、redis 的淘汰策略有哪些?
42、消息队列的主要角色有哪些?
43、消息队列的重复消费问题
44、zk 怎么选举主节点的?
45、为什么一般是单数的节点数?
往期精选:
2019秋招总结一:Java转行之路
2019秋招总结二:460道Java后端面试高频题
长按并扫描下方二维码加微信可获得我的秋招简历和复习资料!
欢迎转发~
扫描二维码获取更多资料:码农求职小助手