1.release版本的程序崩了怎么调查
2.release版本和debug有什么不同,release优化了什么(举了个例子)
4.计算机网络相关,说一下键入url发生的事
5.说一下tcp头部有哪些,有实际检查过是这些东西吗,回:没检查过,项目用过tcpdump抓包,抓包看到的是什么
6.说一下http3-详解了quic
7.项目中LT和ET的区别,实现了哪种(都实现了)项目用的哪种,ET怎么实现(加while,errno判断有没有结束)挖了个坑,说webbench出错了测不出哪个更好,问我为什么出错,可能哪里有错(说了下webbench原理,甩锅给虚拟机
8.什么情况程序会崩(地址越界,栈溢出,起了野指针的例子 操作野指针都会崩吗:不是的,自己vscode试过不会,网上写算法题会,可能要看编译器)
9.如何调试(gdb
10.多进程和多线程的区别
11。进程间通信方式
12.线程同步和互斥(说了下同步的方式,互斥的理解是串行化,但同步也可能用到互斥锁之类,应该是差不多的
13.读写锁,读写读这样的顺序,最后是写还是读
14.项目里能用到读写锁吗(没必要)怎么替换?(互斥锁全部换成写锁
15.操作系统怎么选择线程(时间片)只靠时间片吗?(还要考虑优先级,应该是多级反馈队列,猜的
另一个面试官,很不耐烦的样子
1.质疑web服务器的框架慢,让我说下总体的流程
2.质疑我主线程处理IO和新的链接不能做到万级并发???问我哪些线程压力大?有没有测过
读入的数据放哪呢?我说包装http成一个类,提前创建一个对象数组,按照文件描述符来获取下标,初始化并存放链接信息,初始化会开辟缓冲区。后续又反复质疑,觉得这个报文解析组装花不了多久,我说还有mmap映射和账号密码的处理,面试官不以为然
3.请求报文都有哪些,头部里有哪些?漏了个HOST就问我HOST里面是什么(忘了),项目里HOST这个字段不存在怎么办(只通过strncmp提取host的值存着没用上,后来看了下项目确实是只保存了HOST的值,不存在就直接为空呗
怎么查看报文?(浏览器F12)还反复提了漏了HOST这个事,我说了好几个head漏记一个至于反复提吗,此时已经开始气了
4.每行结尾都是\r\n,那如果连续的两个\r\n,进程会怎么处理?(记得请求行后如果两个\r\n直接跳到request,面试官一直嬉皮笑脸质疑,整不自信了
5.conten-length为0怎么办(收不到账号密码—回头看项目,完全没考虑过这个情况,不知道会发生什么
换回另一个面试官
1.项目中哪里体现了面向对象的思想
2.说到多态,问虚函数和纯虚函数的区别,为什么能实现多态,虚函数指针为什么在地址首位(???