面试官很友好,自己太菜了。意识到了自己对计算机的认知有多么浅薄 orz
一共75分钟,讲的口干舌燥
不知道哪些是答得不对或者不全的地方,也请懂的同学不要藏着掖着,可以在讨论区聊聊呀~
一个小厂面试难度竟然已经如此可怕了
感觉分布式已经是后端的必要技术栈了。卷成这样也是离谱。也许该好好考虑考虑 #互联网没坑了,还能去哪里# 这个话题了。
等我毕业了,银行等国企的坑也该填满了,感觉自己每多上一天学,就业就恶化一天。鉴定为:寄
回想起20年字节的实习门槛,回想起那时某些双非本科一个班能秋招4个进字节。努力在时代面前不值一提~
项目
HTTP/TCP的相关知识:三次握手,Long connection的含义、半连接的作用
socket操作,socket操作与三次握手之间的对应关系。
Session、Cookie、Token
Mysql为什么选择B+树(开始吟唱),答了支持范围查询(不能用哈希)+减少IO次数(B树、二叉树、红黑树、跳表都有更多次IO的问题)
Mysql有哪些优化措施:“先说这是一个很大的话题”,答了建立恰当的索引(以及避免索引失效)、低NF以空间换时间、改用适合业务场景的其他执行引擎(MyIASM, RocksDB)、分库分表(水平垂直分库分表)、建立主从集群(讲了一主多从、主从分离)。
操作系统:Page Cache的作用,操作系统进程的状态(答得不好,状态的名称记不太清了)、操作系统的进程调度算法(没看过,看过也忘了,寄)。
用过哪些命令。
磁盘IO有哪些优化?只想到了减少访存次数+顺序读写,面试官说之前提到的Cache也可以(傻了,竟然没想到),讲讲磁盘的Cache(说了mmap这种direct IO和缓冲IO,感觉说的不太好,可能没扣题)。
内存满了之后怎么办?答了通过页面淘汰算法淘汰页面,比如FIFO, LRU, LFU。
Go:协程切换VS线程切换,讲讲协程切换的细节(说了恢复上下文,包括保存的寄存器信息和pc指针,懂的同学可以讲讲)
容器:讲了讲docker的大体实现,docker是做什么的。
知道K8S这种容器编排吗?是做什么的?不会K8S,直接寄,听面试官大概讲了讲K8S用于万规模以
https://leetcode-cn.com/problems/yong-liang-ge-zhan-shi-xian-dui-lie-lcof/
之前做过,直接看代码复习了以下,是一些实现delete head的小trick罢了,应该能想到。
https://leetcode-cn.com/problems/remove-nth-node-from-end-of-list/
相当于复习了链表的删除。基本功还在,但是一些细节出了点小问题。
我觉得总结一点是:一定要在
while(xxx && xxx)
{
dosomething();
}
的时候,一定要认真想想,到底是不符合while中的哪个条件跳出了,这两个不同的跳出条件往往对应着不同的后续处理思维。
https://leetcode-cn.com/problems/letter-combinations-of-a-phone-number/
这题非常简单,进行一个基本的深搜即可,无难度。
https://leetcode-cn.com/problems/reverse-integer/
整数翻转本身没什么难度。难点在于如何在不使用long long的情况下,预判这个数字是否已经overflow。我使用的做法是预先让其和标准数组{2147483647}进行逐位的比较。
其实还有另一种思路,在
for(int i=0;i<numbers.size();i++)
{
number*=10;
number+=minus*numbers[i];
}
的过程中,在number*10+res之前,对number进行特判。如果number已经大于了214748364,或者等于214748364并且余数大于7,那么这个操作就会导致overflow,拒绝后返回0即可。
https://leetcode-cn.com/problems/longest-substring-without-repeating-characters/
dp,dp[i]表示以i为结尾的最长的符合条件的字符串的长度。dp[i+1]只需要向前查找,看看dp[i+1]对应出的字符串是否在其dp[i]构成的字符串之间即可。如果在之间,从出现位置处截断。
答案的解法中,其实是把这种思想从前往后推了,叫做“滑动窗口”思想。简单来说,dp[i]研究的是以i开头的最长符合条件的字符串的长度。对于dp[i+1],由于dp[i]没有了,因此最后的长度可能向后推一定的距离(只需要保证新加入的字符不会和已有的字符冲突即可)
https://leetcode-cn.com/problems/add-two-numbers/
基本链表操作复习
高精度加法弱化版