前言:
之前发表了一篇实习复习的内容:史上最全!20/21届春招/秋招 实习/校招 JAVA面试全攻略!复习回顾这一篇就够了!
在这篇文章详细说了该如何去复习,也答应各位把面经整理一下,但是因为入职的事情耽搁了,现在整理出来回馈给大家!
PS:楼主只收到网易、快手、华为三家offer,也不是所谓的offer收割机。只是提供一些个人经验,这个平台帮了我很多,前人栽树后人乘凉,共勉!
0.自我介绍
1.问项目(项目详细介绍、用到什么技术、有什么优化)
2.线程池?创建线程池需要哪些参数?是否会存储内存溢出?
3.常用的数据结构?
4.栈跟队列的区别?
5.编程题:使用两个栈实现队列的功能
6.mysql的b树和b+树?
7.聚簇索引和非聚簇索引?
8.索引的优化,索引的失效?为什么不是索引建的越多越好?
9.线程安全的问题?(这个问题我并没有听懂)
10.创建线程需要创建哪些资源?线程有哪些状态?
11.线程的start方法和run方法?
12.线程之间通信有哪些方法?进程之间通信有哪些方法?
13.线程和进程之间的区别?
14.tcp和udp的之间的区别?
15.drop、truncate、delete之间的区别?
16.javaGC有哪些算法?常见的垃圾回收器?
17.java内存区域?
18.什么时候会进行young GC?什么时候会进行full GC?
19.反问环节
PS:第一次面试,有点紧张,知识差不多都会,但是答的思路并不通畅。但是一个月之后收到感谢信。。。
0.自我介绍
1.ApplicationContext这个接口?有什么用?继承自什么接口?
2.springboot的启动流程?
3.三道代码题:
PS:一面就三道编程题把我弄得有点蒙,面试小哥说时间不够了,我给你安排二面吧…
0.自我介绍
1.做项目遇到的问题?
2.单线程改为多线程会产生什么问题?(因为我项目中使用了多线程优化和线程池)
3.线程池的参数?
4.线程池的内存溢出是什么情况?
5.阻塞队列介绍一下?加锁的情况?
6.写过关于信号量的东西吗?(面试官对我把阻塞队列中底层源码lock.newCondition作为锁表示怀疑,所以问出来了这个问题)
7.线程池的启动流程?
8.线程池的过期时间这个参数,指的是什么?线程池的过期时间到了之后,线程是如何被操作的?
9.OSI七层模型?
10.TCP和UDP的区别?
11.三次握手协议?
12.hashmap的原理?hashcode和equals的关系?hashcode相等,equals是否相等?
13.hashmap为什么是线程不安全的?
14.hashmap的尾部遍历?(没答上来)
15.数据库的优化过程?
16.explain的查看哪些字段?(答的不完整)
17.数据库为什么使用B+树而不是使用B树?
18.索引存储的位置?磁盘还是什么?
19.B+树的叶子有什么特点?为什么B+树适合范围查询?
20.什么是回表操作?如何避免索引的回表?
21.什么情况的会用到锁?介绍一下java中的锁?
22.synchronized的锁的底层实现?
23.锁升级理论?什么时候会转化为重量级锁?
24.算法题:给定数组,一个给定值,寻找数组中两个数字之和为指定值。(使用了暴力解法,面试问了一下优化方式,没答上了)
25.反问环节
PS:这个面试明显比上一个气场要强,问的问题比上一个面试官深,虽然基本上都答上了,但是面试官会对一些平时不太注意的细节加以询问。整体的流程比较严肃。
正在腾讯的笔试,打来了电话,说询问一下情况。。。
1.实习经历
2.实习项目
3.项目的解决思路
4.在实习公司如何学习
5.对应聘部门的了解
6.反问
1.自我介绍
2.在学校的GPA,在学校有没有参加ACM和数学建模
3.你个人的博客地址(我写了自己经常写博客)
4.阅读过的技术书籍,遇到问题怎么去查找
5.hashmap的基本原理
6.处理hash冲突的方式
7.jdk1.8使用treemap来处理哈希冲突,你是怎么理解的?
8.arraylist和linkedlist的区别
9.增加删除线性表的第一个元素,使用哪种数据结构
10.JVM的内存结构
11.新生代和老年代的GC算法
12.内存泄露是什么?什么情况出现?
13.HTTP常见状态码
14.HTTP和HTTPS的区别
15.mysql提供哪几种索引
16.单库数据库满足不了性能,如何处理
17.分库分表的水平和垂直切分
18.Redis的分布式锁
19.什么是公平锁?什么是非公平锁?
20.常见的设计模式?
21.工厂模式使用场景
22.Linux命令:awk命名(分割符),查找指定列;pdm集群找出文件
23.线程池的实现思路
24.反问:部门的主要内容、HC多不多、自己的不足
总结:基本上都答出来,Linux命令两个都不知道,没有考察编程,因为面试官说我笔试不是很好,所以没考察,后面的会重点考察。
PS:然后就没然后,今年阿里疯狂刷KPI,我投的属于比较晚的,截止到4.30号,还是没有消息,找内推人得到的回复是,面试官比较忙,然后我就主动结束了内推流程了。。。
1.怼项目
2.疯狂怼项目
3.归并排序
4.TCP为什么需要三次握手而不是二次握手
5.反问:部门是什么,二面什么时候,部门的业务和语言
PS:这是PCG部门,部门的语言是go、python、java,我猜测这个面试官的主要方向不是java,没有问我java方面的,问了30分钟的项目,最后的结论是:项目太少、语言掌握太少。
一段时间之后就收到感谢信了(估计是语言不符)
0.自我介绍
1.线程和进程的区别?
2.进程什么时候会从用户态进入内核态?为什么需要引入用户态和内核态?
3.什么是守护进程
4.什么是孤儿进程?什么是僵尸进程?
5.进程的通信方式?本机进程与进程使用socket的场景?
6.TCP和UDP的区别?
7.OSI七层协议?五层协议?
8.路由器和交换机分别位于哪层协议?
9.TCP保证可靠的机制?
10.TCP如何确认每次数据的正确性?
11.三次握手和四次回收?
12.TCP建立连接和断开连接的状态(time_wait和close_wait)
13.time_wait和close_wait大量存在的原因和处理办法
14.time_wait 的存在时间为2msl,为什么?
15.数据库索引?
16.数据库索引优缺点?索引回表(结合着一个场景题)
17.什么时候数据库索引失效?
18.队列和栈的区别?平衡二叉树?
19.AVL树、B树、红黑树的区别?
20.java面向对象特性?继承、封装、多态?
21.什么是反射?使用场景?
22.jvm的内存区间分布?堆和栈分别存储的内容?
23.对象的方法参数存储的位置?
24.gc回收、分代垃圾回收算法、年老代和年轻代回收?
25.hashmap在jdk1.8的变化?
26.项目介绍
27.项目自己做的优化
28.一致性hash算法、负载均衡
29.反问:部门情况、语言、表现如何、多久可以接到通知
PS:网易的招聘流程给我的感觉很不错,通知也很及时,问的也很基础,面试感觉比较好。
0.自我介绍
1.项目相关?邮件存储的方式(我的项目是邮件项目)
2.技术上的优化方案?
3.算法题:01二维数组,上下左右视为连续,求二维数组中连续的最大1的个数。
4.java中支持并发的容器
5.hashmap的底层实现?get的操作过程?
6.从网页上写下一个URL,都有什么过程?
7.https的非对称加密?加密过程?
8.反问环节
PS:面试小哥全称带笑,算法题也是引导着很快就做出来了。
0.自我介绍
1.学校担任过什么职位
2.对网易的看法
3.平时玩游戏吗?玩什么游戏?
4.平时如何学习的?通过什么方式去解决问题?
5.说一下你觉得你处理的最好的事情?
6.反问
PS:网易这个hr给我的感觉就比较亲切,开始的时候还自我介绍了一下,给我一种十分尊重的感觉,然后交流的时候也十分轻松,就感觉自己已经过了。。。
0.自我介绍
1.平时怎么学?看过什么书?
2.项目相关?几个人做的?如何配合工作?功能模块遇到的问题?如何优化?
3.实习时间?有什么感受?
4.上一个实习加班吗?
5.hashmap如何遍历?
6.hashcode和equals方法区别和作用?
7.new一个对象,java中有什么操作?
8.类加载的过程?
9.泛型?泛型的两个关键字介绍一下?(extends、super)
10.Spring的AOP,底层的两种实现?(两种动态代理模式)
11.sql语句,班级表,查出重名的人?
12.sql语句优化(慢查询、explain)
13.网关接口,每个接口被调用的次数(这个没答出来,说了一下幂等性的唯一id的那种模式,面试官反馈好像可以)
14.自己的平时爱好?
15.自己的缺点?
16.你有什么要问的吗?
总结:感觉面试的比较仓促,然后就没有了,也没有感谢信。。。
0.自我介绍
1.算法题:整数数组,打印一个和最大的连续子数组,和相同的情况下打印最长的情况。
2.常见排序方法?
3.快速排序和冒泡排序的区别?是否稳定、时空复杂度?
4.递归方法的优缺点?
5.研究生实习时长?
6.实习期间的主要收获是什么?
7.反问环节?
PS:一面比较简单。
0.自我介绍
1.学校什么时候开学?
2.什么时候能来实习?
3.导师对实习的态度?
4.学校的位置?
5.对微服务架构的理解?
6.实习的目的?
7.会选择留在华为吗?
8.使用过什么数据库?
9.有女朋友吗?(emmmm)
PS:这个大佬是2004年硕士毕业进华为的(我也不知道为什么二面会安排这种资历的面试我。。。),这个大佬刚进华为的时候被派到我学校附近工作,经常去我学校吃饭打篮球,就对我很亲切,全称聊的很开心,当天晚上就给offer了。
0.自我介绍
1.抽象类和接口的区别?分别用于在什么场景?
2.String 、Stringbuffer、Stringbuilder
3.重载和重写的区别?
4.arraylist和linkedlist的区别?
5.为什么hashmap不是线程安全的?
6.线程的状态?
7.wait和sleep的区别?
8.synchronized的类锁和对象锁?
9.线程池在CPU密集型和IO密集型?
10.youngGC和fullGC的触发条件?
11.young区分为哪些区,哪个区满了会触发youngGC?
12.垃圾回收器?G1和CMS的了解?
13.java内存模型?
14.线程的同步和通信?
15.volatile关键字?底层的机制?
16.float和double的浮点的精度运算?
17.数据库场景题:
18.乐观锁和悲观锁?
19.spring的初始化的流程?
20.Redis的数据结构?
21.Redis的分布式锁?
22.Redis的哨兵机制?
23.消息中间件使用过吗?
24.编程题:两个单向链表进行加和,例如1->2->3->4,另一个是3->4,返回一个链表1->2->6->8;不可以遍历转出数字直接加。。。
PS:在数据库场景题上答的不好,其他的差不多答上,最后因为部门名额没了,收到感谢信了
【Java 面试那点事】
这里致力于分享 Java 面试路上的各种知识,无论是技术还是经验,你需要的这里都有!
这里可以让你【快速了解 Java 相关知识】,并且【短时间在面试方面有跨越式提升】
面试路上,你不孤单!