一面 1h10min
- Unicode和ASCII的区别
- 进程和线程的区别
追问:共享的资源
答:线程持有栈、程序计数器
- 进程的调度算法
追问:进程什么时候会调度
答:时间片用完了、任务做完了、等待事件发生(不知道答的对不对)
继续追问:进程中断的时候,谁来保持上下文。
答:不知道,瞎扯内核线程来操作等等
追问: 是有可能在另一个CPU的线程来操作保存上下文吗? 我意识到这样确实说不通,再次表示自己确实不清楚
- 虚拟地址
追问寻址具体是哪个硬件在做?
答:不知道
- CPU的多级缓存
追问:CPU如何通过缓存获取一个变量 具体过程是怎样的(大概是这么个意思)
瞎扯了一些
- volatile
- Semaphore和mutex区别
接着略略的说了下多线程环境下用semaphore、signal等系统提供的变量会存在什么问题
- 读写锁
- 知道线程池吗
但是没有去处理,之后说了线程池里的线程是如何工作的
- 静态链接和动态链接
追问:动态链接何时链接,回答不知道
- Linux大页存储
打断并追问:mmap()的命名映射和匿名映射
答:说了mmap()的共享匿名映射构建出的父子进程的共享内存实现通信。(但是忘记了私有匿名映射用于malloc()的分配,不过面试官没继续追问)
- 知道MMU和TLB吗
- 知道Slab和xx的区别吗?
- 模板的偏特化
追问知道bind()函数吗,我表示知道,并讲了bind()函数在函数传参时候的用法,然后面试官帮忙总结了bind()函数的作用
- 你之前提到C++的allocator,可以讲一下吗
诞生了allocator,讲了allocator的工作原理,拓展到其实就是内存池的设计理念,malloc底层实现其实也跟allocator差不多
- TCP、UDP的协议栈
- 报文从应用层到数据链路层会有怎样的变化
追问是每一层都要分片吗
答:如果超过了对应层限制的报文大小的话,是的,同时提了下数据链路层超过1500B就要分片。不知道答对没有
面试官只是继续追问:分片帧和分片报文段有啥区别(记不清)
答:不同层的叫法不同吧(不确定)
- Google的protocol buffer知道吗?
追问:json,表示同样不知道。
- 路由器、网桥、交换机在哪一层
- 一个数据包发送的全过程
回答完后,面试官问服务端对第一次握手的回应的,回应了啥(忘了具体是怎么问的了),没答到点上,面试官回答了说这一次握手既回应了syn
又发送了ack(这里没记好,之后再查查,总之就是三次握手其实有四次回应的意思)
- TCP的滑动窗口,拥塞控制
- HTTP的header有啥
- cookie和session
- get和post区别
- 状态码
- 跨站请求伪造攻击
- 事务、锁、主键、索引的概念
基础知识
- 你C++了解的很多是吧,那我直接问进阶的:虚函数表
答:可以。并表示C++可以通过dynamic_cast等转型,任意转换指针类型,所以想访问基类子类都可以(不知道答的对不对,面试官没表态)
- 智能指针
面试官表示没时间了,结束了提问,算法题也没做。
二面 1h20min
二三面的参考意义都不太大
- 你一面的面评还挺好的,所以咱们这次主要考察下数据结构和算法
- 手写跳表
面试官基本全程都在与我交流,在写数据结构的时候,我定的有点复杂了,面试官提示我让我改简单点,表示不需要整个实现出来
30min写完基本逻辑,然后剩下的时间面试官点bug,我改bug。一直到最后面试官觉得没啥问题了,就放我走了 三面 40min
- 面向对象编程的思想
最后看没啥可说的就让我下线了。面完感觉自己命悬一线,整场面试基本就在考察面向对象编程的思想,但是自己真没做过啥工程项目,设计模式也因为觉得是加分项所以没碰
面完之后一直没收到感谢信,第三天hr加我。说我被挂了,然后光速被ios的捞了,并表示之前的面试会算在一起,因此没有收到感谢信,所以没有完全挂
ios一面面经 1h30min
自我介绍,之后面试官问我“你们这个专业(网络空间安全)毕业一般干什么”,我给他聊了会网安这个行业的前景,以及个人的一些见解,过渡到自己为什么选择研发
简历上的项目是烂大街的WebServer,因为太烂大街了,所以这里就把项目具体问了啥给大家看看,应该是有参考意义的
- 定时器模块
- 日志模块
- 进程调度算法
- 内核线程和用户态线程区别
- 嘴撕LRU
- 哈希冲突的解决方法,扩充后如何保证原索引正确
- 进程的五个区
- 栈和堆的区别
- 内联函数,什么时候用内敛
- int long区别
- 给一棵树的前序和中序遍历,让输出后序遍历。不要求代码实现,直接给答案即可。参考LC105
- 函数传入一个数组如何获取它的长度
依然是传指针,应该是没啥区别的。我就跟面试官说应该没啥区别,然后还说了假设传的时候把长度也传过去了,还要考虑这个数组有没有初始化的问题。这个问题懂得老哥分享下呗。
- 子网掩码的作用
- TCP和UDP的应用场景
- HTTP劫持和DNS劫持(这个不会)
- HTTP2和HTTP1.1区别(这个忘了),然后跟面试官说了我知道HTTP3和2的区别,接着他就让我说说区别在哪
- HTTP3如何解决队头阻塞的多路复用,基于什么实现的
- 抓HTTPS的包,可以得到明文吗?不可以的话,那你解释下为什么中间人攻击可以
- 面试官自己出了两道字符串的简单题。均采用模拟方法就可以解决
总结
产品研发一二三面和ios一面的面试官都很好,后面复盘的时候发现对于很多第一次没答出来的的问题,面试官都在后续提问中换了个角度继续引导。最后三面挂掉真的让我感到非常的可惜,但是自己也确实缺乏工程项目的实战经验,这个没啥好说的。好好加油吧
全部评论
(7) 回帖