2020年Java后台开发秋招面试总结

记录一下自己刚结束的2020秋招之旅,从8月初开始到9月底结束,感慨很多,期间有激动、焦虑、失望等各种情绪,拿到了大厂的offer,收获也还是蛮多的,也发现自己某些方面的不足,在将来的路程上仍会保持学习。

秋招的第一个面试来自腾讯,因为自己在暑假的时候准备过Java的一些相关知识,面试官问的问题是源码层次的,表述要够清楚,并且对于源码上的一些问题要准备充分。

我是8月初在牛客网上让大佬内推腾讯后台开发的提前批,当初只是想试一试,没怎么报希望能够过简历,没想到在8月8号收到腾讯的电话面试邀请短信,约的是下午7点,一面进行了将近50分钟,因为自己是第一次面试,挺紧张的,大多数问题基本能答道点子上,但是由于过于紧张自己有些能扩展回答的都没去想,发挥一般,本来以为已经挂了,但是第二天早上10点又收到了短信,约的是下午2点半进行二面,二面进行了30分钟,答的也可以,只能说前期的准备是一定要充足的

腾讯的面试官真的很准时,而且人比较温柔,自己挺紧张的一个状态,还是比较有耐心的在听自己说的。

一面的主要流程:

1.介绍一下自己做的项目?

2.数组与链表的区别?

3.查询数组还是链表快?删除使用哪一个快?

4.线程的状态有哪些?阻塞和等待状态区别?

5.什么情况会形成死锁?

6.Java怎么避免死锁?

7.线程怎么安全退出?

8.什么是线程池,线程池的好处?

9.Java线程消费者与生产者中的相关问题,怎么实现?

10.synchronized方法和synchronized同步块的区别?

11.interrupted()方法的用法?wait() 和 sleep() 的区别?

12.讲一讲HashMap?

13.介绍一下GC,什么是GC?

14.JVM中的引用类型?

15.数据库存100条数据与存1条数据的区别(存储时间是否一致)

16.数据库(MySQL)瓶颈在哪儿?

17.数据库瓶颈现象如何解决?

18.HTTP哪个首部字段与断点续传有关(传输文件中断,怎么重新继续传输)?

二面主要流程:

1.讲一讲volatile关键字?

2.线程池理解,实现原理,源码?

3.SpringAOP实现原理+IOC实现原理(源码怎么实现)?

4.讲一讲动态代理?

5.反射及其实现原理?

6.sleep()和wait()的区别?

7.stop退出线程安全吗(正常退出吗)?

8.notify和notifyAll区别?

9.讲一讲线程之间怎么协作?

10.并发时怎么应对?

11.OM平时用过吗?怎么解决OM?

12.讲一讲线程创建的时候发生了什么?

13.退出线程的方式,怎么退出线程?

14.nio了解吗?

第二次面试是在9月初,是面试的成都知乎后台开发,去公司现场面,约下午2点,感觉面试官挺忙,等了10来分钟后才到,然后开始面试,下午一共进行了两次面试。

第一面:

1.多线程和多进程分别适用于什么场景?

2.并发和并行的区别?

3.TCP/IP协议的3次握手和4次挥手?原因?

4.设计平衡二叉树的原因?

5.问了快排、堆排、归并等排序的时间复杂度与空间复杂度?

6.索引的数据结构有哪些,讲一讲B+树?

7.MySQL的存储引擎知道吗?区别?

8.合并两个有序表最优解(当时只想到了归并排序的思想双指针外排序方式)

9.介绍HashMap,说到红黑树,然后提问:介绍一下红黑树?

第二面:

1.介绍堆的数据结构和堆排序的思路,并手写堆排序代码(10分钟)

2.场景题:只有一台机器,10亿个ip地址(有重复)找出出现最多的10个ip,怎么处理?

3.HashMap冲突的解决方法以及原理分析?

4.Git的常用命令有哪些,merge时候出现冲突怎么处理?

后面的几次面试是一些小公司的面试,在9月中旬到9月底陆陆续续参加了很多小公司的宣讲会,一般宣讲会后面都有笔试,笔试题一般都比较简单,Java开发岗位一般都是Java基础的选择题和一两道编程题(都是很简单的编程题),有些公司会有MySQL和Linux的题目,笔试题经常出现多态、继承、异常捕获、抽象类、equals()方法、类似于求(i=i++ + ++i)的运算结果,System.out.println(-1%-5)、System.out.println(3&5)等题,小公司的笔试挺容易过的,一般都会收到面试邀请。

记录了一些出现比较多的面试的问题(套路):

1.面向对象的特性?

2.讲一讲Java多态?

3.抽象类与接口的区别?

4.讲一讲HashMap?

5.Java线程池好处以及实现原理?怎么创建线程池?

6.Java8新特性了解吗?,讲一讲流?

7.闭包了解吗?讲一讲lambda表达式?

8.比较Java锁(synchronized和ReentrantLock的区别)?

9.讲一讲JVM里面的GC?

10.JVM内存分配策略?

11.反射是什么,怎么实现的?

12.讲一讲事务的特性?解释一下ACID分别是什么?

13.知道哪些设计模式?平时或者项目里面用过哪些设计模式?

14.手写单例模式(双重检测机制)

15.MySQL 中 InnoDB 和 MyISAM 区别?

16.MySQL的默认隔离级别?

17.知道数据库优化吗?SQL优化?

18.讲一讲索引,说一说B+树

19.什么是SQL注入?怎么解决?

20.用过哪些SQL的函数?(写一个查找平均分SQL语句)

21.讲一讲spring事务,ioc,aop,bean声明周期?

22.hibernate和mybatis的区别,各自的优缺点

23.Linux常用命令有哪些,查看端口的命令是什么?

24.HTTP常用的首部字段有哪些?

25.GET和POST的区别?

26.HTTPS协议?什么是对称加密和非对称加密?

27.多线程join()和yield()方法的作用?

28.介绍一下juc里面常用的几个工具类

29.TCP/IP协议的3次握手和4次挥手

30.各种排序算法思路以及时间复杂度(主要是快排,冒泡,堆排,归并)

31.topk问题(快排和堆来解决)

32.Git的常用命令有哪些?

33.Git在merge的时候出现冲突,怎么处理冲突?

最后,喜欢这篇文章的话,可以给作者点个喜欢,点下关注,每天都会分享Java相关文章!

记得一定要关注我哦,欢迎大家加群交流723770387会不定时的福利赠送,包括整理的面试题,学习资料,源码等~~

你可能感兴趣的:(2020年Java后台开发秋招面试总结)