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

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

秋招的第一个面试来自腾讯,因为自己在暑假的时候准备过Java的一些相关知识,所以过了一面,但是没过二面,二面的面试官问的问题是源码层次的,加上自己当时比较紧张,一些表述不够清楚,并且对于源码上的一些问题没有准备充分,自己的能力还不达标。

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

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

2020年Java后台开发秋招面试总结_第1张图片
一面的主要流程:
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的时候出现冲突,怎么处理冲突?

你可能感兴趣的:(面试笔试,校招笔试真题)