本文转自牛客网
只能自己给自己鼓励,不能总是按别人说的去做。有时,你甚至连为什么要这样做都分不清楚,任何的责任都可以让人振奋。但是,荣誉,那才是让你决定做还是不做一件事的原因。关键是你是什么人,还有就是你想成为什么样的人。——《弱点》
字节跳动服务端研发
一面
1、 虚拟内存是什么干什么用的。
2、HTTP协议包括哪几种请求,如何保证幂等性。
3、 输入一个网址到浏览器渲染出页面的过程中有哪些报文,分别涉及哪些协议,协议的主要内容是啥,分别用来做什么的。
4、 如果让你设计一个下载器中的断点续传功能,你打算怎么设计,会有哪些问题。
5、 有一个袋子里面装了黑白两种颜色的球若干个,现在每次从袋子里面摸两个球,如果摸到的是相同颜色的球那么将两个球丢弃并且重新放一个黑球进去,如果摸到的是不同颜色的球则将黑球白球放回,问最后袋子里面存在哪些情况并且详细说明过程,推导方法。
如果将问题修改成摸到相同颜色的球直接丢弃不放回的话,这个时候整个过程会有哪些变化。
6、 有一台服务器,含有若干的CPU和内存资源,现在有一系列规格不等的虚拟机,设计算法最大化的利用服务器的资源并分析求解的复杂度。
7、 手撕代码,给一个数组,将数组看做二叉树,输出二叉树的右半边部分,每一层要求逆序输出,开始使用层序遍历,面试官后来问了有没有更好的解法。
二面 (感觉不是做JAVA的)
1、 什么是堆,画了个二叉树问是否符合最小堆的结构,然后根据图叙述堆排序的详细过程。
2、TCP与UDP的区别,还有哪些其他的传输层协议,用来做什么的。
3、 进程与线程的区别,你是怎么理解这两个概念的(快被问烂了的问题……)
4、Volatile关键字干什么用的和底层原理,CAS干什么用的以及原理。
5、 原子类的功能,实现原理。
7、手撕代码:Leetcode原题. 最长公共子串。
8、最后补了个redis的数据结构,跳表怎么实现的,有什么用,哪些指令相关。
三面
1、 四次挥手,会出现哪些问题,如果过程中服务器宕机会出现什么问题,怎么去解决。
2、设计一个HashMap类,键值类型都是整形,唯一的要求就是尽可能高的提高内存的利用率,存放尽可能多的键值对,问了Java中的hashmap,会有哪些问题。
3、操作系统当中的进程调度算法。每种算法的优缺点。
4、设计一个拥有热加载功能的IOC容器。
5、Java当中的类加载过程,都干了啥,内存划分,存的是啥。
6、Java堆栈当中存了哪些内容。
7、了解哪些设计模式,不同的动物有不同的叫声,使用什么设计模式比较好,优缺点。
8、Spring AOP实现的原理。
9、Java中的Condition类是用来干什么的,如何实现的。
10、如果让你设计一个线程池,你会怎么去设计,如何实现超时等待、阻塞、分配任务、线程管理等等等,抠细节,差不多涵盖了线程池所有的内容…
其他的比较边角的记不太清了