科大讯飞 Java开发暑期实习一面面经
面试题目
一、自我介绍
- 对当前业界最火的AI相关技术有什么了解?
- 是否了解近期比较火的AI项目代码泄露(提到 open cloud / cloud code)?有没有看源码?
二、 项目经历深挖
- 项目1:初创公司模型轻量化与部署
- 做了什么动作?使用的硬件和语言是什么?
- 推理提速是相对于什么的提速?
- 除了转 ONNX,从“模型角度”和“工程角度”还有哪些提升推理速度的技术手段?
- 关于优化 Base64 编解码与 HTTP 传输逻辑,具体是怎么做的?为什么不用 Base64?
- 项目2:天翼智能交通实习(Python 多进程优化)
- 如何解决 Python 单进程的 OOM 问题?
- 为什么用多进程重构,而不是多线程?
三、 计算机基础八股
- Java 中实现并发程序有哪几种途径?
- 了解过虚拟线程(协程)吗?
- Linux 操作系统上,多进程之间数据同步/通信的方式有哪几种?
- 多线程之间的同步方式有哪些?
- 为什么 TCP 建立连接是三次握手,断开连接是四次挥手?
- 断开连接中,这种“一方断开,另一方还在发送数据”的状态叫什么专有名词?
- TCP 三次握手期间,发送端和接收端分别涉及哪几个主要状态?
四、 反问环节
- 业务线工作内容、内部AI工具使用率、面试表现建议。
参考解析
- 模型推理提速手段:模型角度包括剪枝、量化(INT8/FP16)、蒸馏;工程角度包括算子融合、TensorRT加速、动态批处理(Dynamic Batching)、内存复用等。
- Python OOM与多进程:OOM通常是因为大内存对象未释放,多进程通过独立的内存空间规避GIL限制,同时利用多核优势。相比多线程,多进程更适合CPU密集型任务,但通信成本更高。
- Java并发途径:继承Thread类、实现Runnable接口、实现Callable接口(带返回值)、线程池(ExecutorService)。
- TCP三次握手状态:SYN_SENT(客户端发送后)、SYN_RCVD(服务端接收并回复后)、ESTABLISHED(双方确认连接)。
- 半关闭状态:即Close-Wait或Half-close,通信一方发送FIN后,另一方仍可发送剩余数据,保证传输完整性。