Java开发面经,今日头条、百度、腾讯、快手、借贷宝、阿里云
写在开头
3.12-4.12,历时一个月,终于收到阿里云Java研发实习的录用意向书,可以说这是本次春招真正意义上的第一个offer,大概也会是最后一个offer了吧,本人渣渣211本科菜鸡一枚,能够收到阿里的录用意向书纯属侥幸,为感谢广大牛油的贡献,特放出我在本次春招面试各公司的辛酸经历,供各位有需要的牛油参考。(因为时间比较久了,我很多都不记得了,放出来的只是我记得的部分,不是全部)
2.14(情人节,然而和我这个单身22年的Single Dog没什么关系)今日头条后台开发一面(深圳岗位,处女面,挂)
1、进程通信方式,共享内存原理2、TCP拥塞控制原理
3、TCP可靠数据传输原理
4、TCP与UDP的区别,各自的应用情景
5、数据库聚簇索引与非聚簇索引原理
6、C Map实现原理,查找时间复杂度
7、Java HashMap实现原理,查找时间复杂度
8、HashMap多线程插入是否线程安全(各自Key不相同),为什么
9、快排时间复杂度是O(nlogn)的原因,最坏时间复杂度是什么,原因,如果优化
10、进程与线程的区别
11、进程内存区域划分(数据区、代码区......),哪些是线程共享,哪些是线程独占
12、物理地址与逻辑地址的概念,换算关系
13、select/epoll原理
代码题:
1、3×7表格,从左上到右下,每次只能向右或向下,总共路径有多少条(leetcode原题),我用了深度遍历递归实现,然后问时间复杂度是多少,怎么优化
2、实现一种排序算法
以上问题不是提问顺序。
百度Java研发一面(日常实习岗,挂)
1、简历项目相关问题(15min)2、TCP拥塞控制原理(基础知识 5-10 min)
3、TCP可靠数据传输原理
4、volatile和synchronized的区别
...(不记得还有什么问题了)开放性问题:(15min)
我所在的区大概有多少条公路?大概有多少个加油站?怎么分布?为什么?
代码题:(20min)
快排实现,写好发邮箱
借贷宝一面(口头offer,已拒)
1、都知道什么排序算法,讲一下堆排序,应用场景,讲一下快速排序2、HashMap原理,红黑树讲一下(自己挖的坑)
3、concurrenthashmap原理
4、ThreadLocal应用场景,原理
5、String等号比较
6、innodb索引原理
7、红黑树与平衡树的区别,各自的应用场景
8、两个大文件里面有很多字符串,找出交集
腾讯暑期实习后台开发一面(挂)
1、Java是值传递还是引用传递,为什么2、new一个对象的过程
3、JVM内存区域划分,各自的作用
4、堆空间的划分,为什么这样分
5、垃圾收集算法
6、concurrenthashmap原理
7、TCP三次握手,为什么需要三次握手
8、TCP拥塞控制原理
9、滑动窗口原理
10、TCP网络攻击
11、TIME_WAIT什么情况下会出现,为什么
12、http状态码
13、post和get的区别
14、网络攻击是否有了解?sql注入原理,如何防止(自己挖的坑)
15、SpringMVC和Servlet的区别
16、地址空间的作用
17、进程通信方式,各自应用场景
18、进程与线程的区别
19、MySQL索引原理,慢查询优化,如何合理建索引
20、两个栈实现一个队列(剑指offer原题)
21、两数之和(剑指offer原题)
22、青蛙跳台阶问题(剑指offer原题)
快手一面(挂)
1、java基础,很多,也很常规,所以不太记得了2、JVM内存模型,垃圾回收算法
3、线程池参数及作用
4、有一个线程占用CPU很高,如何查出来,如何打印堆栈信息
5、如何打印一个线程的内存占用信息
6、JVM工具及用法
7、一百亿个数排序?(反正就是很多个数排序,多少不记得了)
8、k个有序链表排序成一个有链数列,代码实现,不用跑得通,讲思路
9、concurrenthashmap原理
10、ICMP处于哪一层
11、TCP三次握手
12、TCP四次挥手
13、页式和段式内存管理
14、volatile关键字讲一讲
15、TCP关闭的closing状态
蘑菇街一、二面(等消息)
(4.16更新,已挂)
蘑菇街面试基本不问基础知识,就是从你的简历中的项目提问,比如我简历上写了一个web项目,里面有权限管理,然后问怎么实现,然后项目遇到的挑战什么的。蘑菇街一面给我的体验是最好的,就问了几个基础知识,然后问项目,然后给你提出改进的思路,而且是慢慢的引导你往改进的思路去想,然后就是场景题,如果你给的方案不够好的话也会慢慢引导你去优化。
--------------------------------------------------------分割线-----------------------------------------------------
阿里云一面
1、简历项目相关(10-15 min)2、传输层与网络层的区别
3、ping使用的协议,处于哪一层
4、TCP三次握手
5、TCP四次挥手
6、last_ack阶段
7、java函数值传递还是引用传递,为什么
8、JVM内存模型
9、full gc时机
...线程相关问题,都是结合场景来提问,我不知道怎么描述
10、java互斥锁(synchronized和lock的区别)
代码题:
不是算法题目,是一道多线程的题目,两个猴子,n个苹果,一个一次拿两个,一个一次拿三个,直到苹果不够两个人中的任何一个拿的时候就停止,后面要解释一下结果,然后改进,不要让其中一个猴子连续拿很多次
阿里云二面(不知道算不算二面,面试官说聊一下,我问是不是二面,面试官说算是吧)
1、简历项目,比赛相关2、浏览器输入URL之后到内容返回的整个过程
3、Linux命令(find命令)
4、TCP三次握手
5、TCP传输过程中出现丢包怎么处理
......
感觉还是比赛和项目相关聊的时间比较长,基础没怎么问
阿里云三面
1、实现一个后端的异步服务框架(实现思路)2、GC机制
3、内存泄漏举例
4、乐观锁与悲观锁
5、简历项目相关的问题
6、专业相关的问题(我是网络工程专业)
7、设计一个服务,提供一个接口,为请求这个接口的用户返回一个B类IP地址,响应越快越好(即支持多并发访问),设计方案
......
感觉这一面主要聊一些场景的方案设计的时间比较长
四面(交叉面)
1、简历项目相关2、TCP拥塞控制原理
3、有了解过Linux kernel里面常用算法
4、专业相关的问题(我是网络工程专业)
5、迪杰斯特拉最短路径算法
6、矩阵连乘问题(动态规划中的矩阵连乘问题)
7、ThreadLocal使用场景,原理
8、ConcurrentHashMap原理
......
这一面面得极差,面得我都要哭了,因为等这一面我等了一周,而且是晚上十点多才等到的电话,那时候心情特别低落,所以很多问题答的一塌糊涂