佰事达面试题

2. 网络编程的流程

服务器端流程:

  1. 创建套接字(socket)
  2. 绑定 IP 与端口(bind)
  3. 设置监听(listen)
  4. 等待客户端连接(accept)
  5. 数据收发(send/recv)
  6. 关闭连接(close)

客户端流程:

  1. 创建套接字
  2. 连接服务器(connect)
  3. 数据收发
  4. 关闭连接

3. 动态库与静态库的区别

  • 动态库(.so):运行时加载,可执行文件小,更新库即可无需重编整个程序。
  • 静态库(.a):编译时链接,可执行文件大,库变动需重新编译。

4. Linux 环境移植做了什么

将 Linux 内核等关键文件进行压缩打包,复制到另一台设备,解压即可使用。


5. 简述 I²C,通信需要多少时钟周期

  • I²C(Inter-Integrated Circuit,集成电路间通信):同步、半双工,两根线:SCL、SDA。
  • 发送 1 字节需 9 个时钟周期(8 位数据 + 1 位 ACK)。

6. 示波器和万用表做了什么

  • 示波器:观察波形、测量时序。
  • 万用表:测量电压、电阻、通断性。

7. 怎么测试文件读取速度(流程)

  1. 获取起始时间与结束时间
  2. 统计读取到的总字节数
  3. 计算:总字节数 / (结束时间 - 起始时间)

8. 为什么来深圳工作

深圳机会多,发展快,离老家相对较近,有利于自身成长。


9. 接受加班吗

可以接受。平时也常敲代码到晚上,利用加班时间学习也不错。


10. 兴趣爱好

跑步、摄影、王者荣耀(水平一般,敲代码比玩游戏顺手)。


11. 想问的问题

入职后主要要解决的核心问题是什么?我可以先从哪些任务开始?


2. 你的优势是什么

项目都是自己独立完成,具备独立思考能力与快速学习能力。


5. 后续是否考公或考研

目前没有,想踏实在行业内发展,把技术打牢。


单链表只允许遍历一次,如何查找倒数第五个元素

使用双指针:快指针先走 5 步,再与慢指针同步移动,快指针到尾时,慢指针在倒数第 5 个元素。


判断公司自研互斥锁是否有效

通过加锁/不加锁对比数据一致性,或在多线程访问共享资源时观察是否出现数据竞争。


读文件如何知道读取时长

读取前后分别用 gettimeofday 获取时间戳,差值即为读取时间。


DAC/ADC 的原理

  • ADC(Analog-to-Digital Converter,模数转换器):采样 → 量化 → 编码
  • DAC(Digital-to-Analog Converter,数模转换器):常见实现有 R-2R 梯形电阻网络、权重电阻 DAC,将数字量转换为对应模拟电压。

如果你还需要我帮你继续更简化、精炼成面试速记版,可以告诉我。