字节提前批 8.4 番茄小说 后端一面凉经
一、写在前面
- 算法仍然是大厂考察的重点;
- 希望各位牛友帮我分析一下面试失败的原因;
二、面试内容(40min)
1. 计算机网络
- HTTP与HTTPS的区别 - HTTP基于TCP进行通信,HTTPS则是在于TCP通信之前,先与SSL通信; 
- SSL的作用 - 防窃听、防篡改、完整性保护; 
- 一个URL输入浏览器之后,详细的解析过程; - DNS解析域名的过程:迭代与递归两种方式,并且说明了请求流动分别经过了什么级别的服务器; 获取IP地址之后,三次握手的TCP过程;详细到了每一个报文中的同步比特、确认比特等;以及解释了为什么要三次握手:确认彼此的接受/发送能力、防止打开过多的TCP链接; 浏览器通过HTTP请求获取对应URL资源,渲染页面呈现给用户; TCP四次挥手,具体到了每一个报文的同步比特与确认比特,并解释了TIME WAIT(防止用户端最后的确认报文不能抵达服务端从而不能关闭连接)和CLOSE WAIT(等待响应进程结束数据的传输) 
2. 操作系统
- 进程与线程的区别 - 进程:对运行程序的一种抽象,操作系统分配资源的最小单位; 线程:比进程更加纤细的存在,实际运行在CPU上的; 这里应该说:线程之间并不独立,极有可能互相影响;进程之间独立性强; 
- 进程间的通信方式 - 7种方式: 匿名管道:亲缘进程通信、半双工、一进一出、实质上是内存中一种较为特殊的文件; 有名管道:与匿名类似、任意进程通信,是实际存在于文件系统的文件; 信号:任意时刻发送给某一个进程的一种信号通信方式,例如在命令行通过ctrl^c结束一个进程; 消息队列:存在于内核当中的消息队列;(遵循FIFO,但是支持随机访问,消息队列克服了信号承载信息量少,管道只能承载无格式字 节流以及缓冲区大小受限等缺) 信号量:一种计数器,主要用于进程间的同步问题; 共享内存:如今最常用的一种通信方式;多个进程访问同一块内存,需要注意对于临界资源的互斥访问; (套接字:实现网络中位于不同端的进程间通信) 
- 进程上下文切换,保存了什么资源? - 说的很模糊;我的回答是:保存了PC、局部变量等内容; 
3. Java八股文
- HashMap的底层实现? - 底层是Table数组,每个数组元素可以看作是一个桶,桶中存放的可能是链表或者红黑树; 链表树化的条件:table>64 && 链表>8 
- HashMap何时扩容 - HashMap元素数量大于临界值的时候,触发扩容; 临界值的大小是当前数组长度的0.75; 0.75的计算,似乎是根据统计学中的泊松分布得来的(不确定); 
4. 算法
- 合并区间 - o(n+nlogn)的写法,即排序+合并,但是我忘记了二维数组的排序API,被说了;可以重写比较器; 
- 寻找峰值 - o(n)简单,但是你要学会o(logn)的算法; 
三、总结
- 需要提升算法,目前仍然不够熟练;
- 回答要有自己的思路与规范,纯背书不好;有了基础知识的实力的人很多,你如何融汇贯通自己的实力?
希望得到大***贵的意见;
#面试复盘##面经##校招##字节跳动##Java工程师# 查看4道真题和解析
查看4道真题和解析
 投递影石Insta360等公司10个岗位
投递影石Insta360等公司10个岗位