一面 60min
- leetcode原题,求二叉树的最长路径长度。
这道题目偏难
2. 解释XSS 和 CSRF,它们之间有什么区别,以及如何防范。
网络完全问题,这道题目不常见
3. 说一下TCP的三次握手和四次挥手的过程。
三次握手,四次挥手是校招必考题,要特别熟练
4. 数据库事务的四种隔离级别分别是什么,它们解决了哪些问题。
Java开发的题目可能数据库问的深一些
5. InnoDB与MyISAM数据库存储引擎有什么区别。
6. InnoDB的索引使用了什么数据结构,与MyISAM使用的索引有什么区别
7. mysql为什么要使用B+树作为索引呢?
数据库索引和B+树属于Java面试经常问道,比较偏的题目。
8.场景题:假设你在宿舍玩游戏,突然发现特别卡,原来你舍友在用迅雷下载东西,为什么迅雷会占用网络带宽导致你玩游戏特别卡,而游戏竞争不过迅雷。
9.大数据量处理题:假如你在网上爬取了用户访问的网址存储在文件中,有4个G那么大,但是你目前只有一台电脑,而且内存是1个G的,请问怎么找出用户访问次数最多的网址。(差不多是这个意思)
考察MapReduce操作
二面 40min
- leetcode原题:二叉树的后续遍历非递归形式。
二叉树的后续遍历的非递归形式,可以用先序遍历的逻辑,加上反转实现,相对较简单
2. 出了一道leetcode上的SQL题 596
SQL语言的题目,Java开发也会考察
3. redis有什么数据结构
String,Hash,List,Set,ZSet
4. redis中的网络IO有了解过吗,它是单线程的还是多线程的,为什么要用单线程。
单线程,避免线程同步加锁使得速度变慢
5. select 和epoll有什么区别,你有没有用过。
select 基于轮询,epoll直接通知
6. 如果你要对班里的学生根据分数进行排名,你觉得用redis里的哪个数据结构比较好。
ZSET数据结构
7.zset的底层是用什么数据结构实现的。
跳跃表
8.数据库的四种隔离级别,解释一下不可重复读和幻象读。
9.InnoDB与MyISAM数据库存储引擎有什么区别。(又问了一遍)
10.cookie和session的区别是什么,干什么用的,JWT有了解吗?
cookie在客户端,session在服务器段
10.你之前是搞Java的呀,那我问你String 和 StringBuilder有什么区别。
String长度不可变,StringBuilder长度可变
- 你了解哪些网络攻击?
- 你有什么问题要问我的吗?
三面 70min
- 还以为头条面试是不问项目的,所以也没怎么准备,结果一上来就怼项目和实习经历,各种问,面试官特别严肃,感觉是某个部门的leader,搞得我特别紧张,不多叙述了。
- 算法题1: leecode原题,买卖股票的最佳时机,只能一次买入和一次卖出,要求输出买入的时机和卖出的时机和赚取的最大利润。
经典的题目,中等难度。
3.做完这道题后就接着要求写出可以进行多次交易的结果,求赚取的最大利润。
- 算法题2:leetcode原题,一天有24小时,一个工人在某一天里短短续续的工作了几个小时 例如1 ~ 2 点,4~8点 5~10点。。。,求这个工人这一天中一共工作了几个小时。(其实就是区间合并问题)
- 你有什么问题要问我的吗?