校招失败,在小公司熬了2年后我终于进了字节跳动,竭尽全力(Java岗)
一面(远程视频面)
自我介绍;项目介绍;Redis介绍;了解redis源码吗;了解redis集群吗;Hashmap的原理;hashmap容量为什么是2的幂次;hashset的源码
object类你知道的方法;hashcode和equals;你重写过hashcode和equals么,要注意什么
假设现在一个学生类,有学号和姓名,我现在hashcode方法重写的时候,只将学号参与计算,会出现什么情况?
往set里面put一个学生对象,然后将这个学生对象的学号改了,再put进去,可以放进set么?并讲出为什么
Redis的持久化?有哪些方式,原理是什么?
讲一下稳定的排序算法和不稳定的排序算法;讲一下快速排序的思想
二面(现场)
自我介绍;讲一下数据的acid;什么是一致性;什么是隔离性;Mysql的隔离级别;每个隔离级别是如何解决;Mysql要加上nextkey锁,语句该怎么写;Java的内存模型,垃圾回收;线程池的参数;每个参数解释一遍;然后面试官设置了每个参数,给了是个线程,让描述出完整的线程池执行的流程;Nio和IO有什么区别;Nio和aio的区别;Spring的aop怎么实现;Spring的aop有哪些实现方式;动态代理的实现方式和区别
Linux了解么;怎么查看系统负载;Cpu load的参数如果为4,描述一下现在系统处于什么情况;Linux,查找磁盘上最大的文件的命令
Linux,如何查看系统日志文件;手撕算法:leeetcode原题 22,Generate Parentheses,给定 n 对括号,请写一个函数以将其生成新的括号组合,并返回所有组合结果。
三面
说一说Java内存区域。什么是分布式系统?分布式系统你会考虑哪些方面?为什么说TCP/IP协议是不可靠的?
OSI有哪七层模型?TCP/IP是哪四层模型。讲一讲TCP协议的三次握手和四次挥手流程。为什么TCP建立连接协议是三次握手,而关闭连接却是四次握手呢?为什么不能用两次握手进行连接?为什么TCP TIME_WAIT状态还需要等2MSL后才能返回到CLOSED状态?
什么是DoS、DDoS、DRDoS攻击?如何防御?描述一下Java异常层次结构。
什么是检查异常,不受检查异常,运行时异常?并分别举例说明。
finally块一定会执行吗?正常情况下,当在try块或catch块中遇到return语句时,finally语句块在方法返回之前还是之后被执行?
try、catch、finally语句块的执行顺序。Java虚拟机中,数据类型可以分为哪几类?怎么理解栈、堆?堆中存什么?栈中存什么?
为什么要把堆和栈区分出来呢?栈中不是也可以存储数据吗?在Java中,什么是是栈的起始点,同时也是程序的起始点?
为什么不把基本类型放堆中呢?Java中的参数传递时传值呢?还是传引用?Java中有没有指针的概念?Java中,栈的大小通过什么参数来设置?
一个空Object对象的占多大空间?对象引用类型分为哪几类?
讲一讲垃圾回收算法。如何解决内存碎片的问题?
大家在去面试自己中意的公司之前建议大家先去练练手,我首先去了美团和快手,每次都会带上录音笔,这样可以更快的发现自己的错误并改正,校招看重的是基础,社招也重基础但是更多的是考察项目,上面一些题可能有些很简单,但是某些点面试官会深挖
面试前也准备了挺久,前面主要是看电子书,学习笔记视频什么的,后面就是刷面试真题