来自:程序员面试
作者:reed,一个热爱技术的斜杠青年,程序员面试联合创始人
今日头条后端一面社招面经,内容比较偏计算机基础和项目,全程50分钟左右。问的问题大概包含以下几点:
1.自我介绍,挑一个你最熟悉的项目说一下?你这个项目最大的难点是什么?在项目中有没有遇到什么难题?你说你在项目中用到了一些设计模式,都讲讲你是怎么用的。项目中有分布式事务处理吗?有哪些常见的分布式事务处理方式?说一下你们在项目中怎么用的。
2.建立HTTP连接的三次握手的过程?,客户端和服务端分别是什么状态。讲一讲Http和Https的区别。
3.线程间通信的方式?假如现在在同一台机器上开两个java项目,有几个java虚拟机?产生死锁的四个必要条件还记得吗?聊聊linux吧,lsof这个命令用过吗?讲一讲linux系统的启动过程?
4.数据库事务的隔离级别有哪些?Mysql默认的隔离级别?不同的隔离级别是通过什么实现的?mysql的explain有用过吗?讲一讲数据库的慢查询?数据库的悲观和乐观锁都说一下吧,什么时候用乐观锁比较合适?什么时候用悲观锁呢?
5.你对tomcat有多少了解,nginx呢?把你知道的都说一下。有做过tomcat调优吗?
6.Java的内存模型,分为哪几块存储区,各个存储区域的作用?说一说volatile,一般什么时候用这个,给我举个例子呗。在项目中有用过ThreadLocal吗?为什么要用这个?ThreadLocal内存泄漏问题了解吗?要不你说下为什么会有这个现象?
7.如果web服务器突然出现频率很高的FullGC,可能是什么原因?你会怎么去排查呢?
8.讲一讲类加载器工作机制?你知道强引用、弱引用和软引用吗?为什么要有这些东西?他们有什么作用?你在项目中用过吗?
基础知识先问这么多,平时有刷题的习惯吗?要不咱写个题吧。
题目很基础leetcode110原题. 平衡二叉树。还是很幸运的。
给定一个二叉树,判断它是否是高度平衡的二叉树。题目描述如下:
本题中,一棵高度平衡二叉树定义为:
一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1。
示例 1:给定二叉树 [3,9,20,null,null,15,7]
3
/ \
9 20
/ \
15 7
返回 true 。
示例 2:
给定二叉树 [1,2,2,3,3,null,null,4,4]
1
/ \
2 2
/ \
3 3
/ \
4 4
返回 false 。
时间也差不多了,今天就聊到这吧,你有什么想问的吗?问了下过去是不是要转go语言,面试官说是的,不过会给一段时间作为适应期。问了下我排斥转语言不?那当然是不排斥了。。。
长按订阅更多精彩▼
如有收获,点个在看,诚挚感谢