联洲提前批

#Timeline

  • 5.30 Submit
  • 6.10 Coding Test
  • 6.17 Technical Interview 1
  • 6.21 Technical Interview 2
  • 6.26 Technical Interview 3

#Comprehensive Evaluation

有阅读理解题,有图像规律题,有编程题

  1. 字符串中最长回文数,给的参数是char*不是string
  2. 优化选择排序(每次选最大的和最小的放到两边,而不是只选一个)

#Technical Interview 1

全程八分钟。无反问。

#Question

  1. 自我介绍一下自己(面试官不介绍自己)
  2. 简单介绍一下项目
  3. 有做项目的优化吗
  4. 主要的开发语言是什么(我寻思我不是说了吗,你在记什么玩意)
  5. 还会哪些开发语言
  6. 浏览器输入域名的涉及的网络协议
  7. 进程间通信的方式
  8. 如果让你设计一个双十一服务器,前后端你怎么设计
    我说前端会用缓存,LocalStorage里,不用反复向服务器请求 后端采用分布式技术,防止单一服务器请求直接打爆
  9. select和epoll的区别
    答了不太熟悉linux底层的网络模型,直接就说面试就到这里?

#Technical Interview 2

照着简历提问,上个人面得太久,还没看我的简历,一点一点读我的简历。45min。

#Question

#计算机网络

  1. TCP/IP五层模型
  2. MAC、IP、TCP、UDP、HTTP在哪一层
  3. 讲讲三次握手和四次挥手
  4. CPU收到中断取包,怎么把数据从内核缓冲区放到内存中的(有一个单元,很底层)
    不会,他说没事,二面主要就是问到你不会为止

#操作系统

  1. 函数调用过程,涉及到哪些寄存器的保存
    参数从右到左入栈,然后用的intel就要保存栈帧到stack中,然后用ebp去访问参数之类的,到最后ret的时候会把栈顶作为返回地址设置到程序计数器eip中
  2. 金丝雀算法(很巧妙说是)
  3. 缺页中断是怎么回事
  4. 为什么要虚拟地址
  5. 有没有做过什么优化(举例子for循环按行遍历和按列遍历,涉及到cache line)
  6. 那能不能在流水线层次进行优化
    这里我说循环展开,他说也算可以,后面有提到一个吊的东西,但是我忘了
  7. 存10亿个数能不能在内存中存 可以,bitmap,操作系统项目的内存管理就用的bitmap管理页
  8. 能不能排序 我说归并,分治它。
    他说bitmap直接可以,有方法,解释的很好但我忘了。

#C++

  1. 讲讲C++动态内存管理 C用malloc和free
    C++用new和delete,数组就加个[]
    但是这种方式不安全,就出现了智能指针
  2. C频繁malloc会怎么样
    出现内存碎片
  3. 当内存碎片多起来的时候,怎么办
    不会
  4. 智能指针RAII
    用栈对象的生命周期去管理比如堆内存,锁等系统资源。更安全
  5. 进程间的通信方式
    通信方式+例子

#分布式系统

  1. 分布式系统一致性模型
    我说这种感觉就像是很熟悉但是想不起来,他说没关系跟嵌入式关系不大,我看你写了就问问

#项目

  1. 介绍一下项目
  2. 怎么实现的全双工
  3. 粘包问题,我觉得不算什么大问题,就不问了
  4. 怎么判断的大端小端
    int a=1用一个char指针去指他,对char指针解引用,看看是不是1
  5. 内核载入是怎么做的
    堆砌mbr、bootloader,不大懂了
  6. 自旋锁怎么实现的
    用cpu提供的xchg原子交换指令,不断交换key和锁的变量
  7. 信号量怎么实现的
    基于先前实现的信号量,因为有信号数,阻塞队列,需要互斥访问,需要自旋锁支持
  8. 共享内存怎么做的
    内核空间预留页表,映射到用户进程页表3G-4G
  9. 这个共享内存可不可变
    不可变,预留好的页表

#Technical Interview 3

没什么好说的,不想跟这种杀软工作。

#Question

  1. 数组名与指针的区别
  2. 手写一个回调函数
updatedupdated2025-03-032025-03-03