4.22字节跳动客户端一二三面
一面
四道算法,注重代码质量
- 大数相加
- 判断并输出一个字符串的重复子串,如abcabcabc输出abc,aaa输出a,af输出空
- 输出最靠近的整数,x为long型,不能使用库函数和非整数变量
- 根据二叉树的前序和后序遍历构造二叉树
二面
自我介绍
项目
操作系统
线程和进程的区别
进程的调度算法
内存模型,堆和栈有什么区别?
多线程访问堆会有什么问题(我只答出了原子性问题和死锁,还有可见性问题和重排)
举个死锁的例子
计算机网络
网络分为哪几层
TCP、UDP区别
TCP为什么是可靠传输,采取了哪些措施
快重传是什么
TCP是如何建立连接的
三次握手头两次会传输什么
HTTP在那一层
get,post,put分别代表什么
状态码讲讲,200,302,404,500
HTTPS和HTTP的区别
HTTPS建立连接的过程
CA证书是里面有些什么
算法
- 两个升序链表,合成一个降序链表
- 寻找输出两个链表的公共节点
- 用1毛 2毛 5毛组成n块钱有多少种方式
三面
自我介绍
项目
操作系统
操作系统线程模型
内核空间下的线程
轻量级进程和用户线程的对应关系
程序创建一个线程的过程,用户态内核态都讲讲
虚表有什么用
编译时多态和运行时多态
Java基础
讲讲Hashmap算法
一颗二叉树两个节点的公共祖先 递归和非递归
反问
总结
- 打好基础,操作系统和计算机网络是考察重点
- 项目要准备好,用到的技术,优化的空间
- 每一面都有算法,基本的代码能力不能丢
- 感谢牛客前辈的经验