腾讯云智暑期实习后端开发一面面经
面试题目
基础信息
- 自我介绍,实习地点倾向,实习时间,到岗时间
Java考点 2. JVM内存是怎样的?创建一个包括age和name的person类,讲讲它涉及的JVM底层 3. 垃圾回收算法,垃圾回收器G1和CMS区别 4. synchronized作用,加锁原理 5. 常见设计模式及其底层思想
数据库考点 6. 聚簇索引和非聚簇索引区别 7. UUID适合做主键吗?为什么不适合?
Linux考点 8. 怎么查看机器负载? 9. 怎么查看端口占用情况?
操作系统考点 10. 什么是零拷贝? 11. 用户态和内核态区别
大数据考点 12. Hadoop下一般由哪些进程构成 13. NameNode怎么实现高可用的? 14. Spark中Job,Stage,Task怎么划分的?宽窄依赖是啥?
实习经历 15. 实习做的比较让人满意的东西 16. 最近有在学习什么东西? 17. 讲讲你做的Agent
参考解析
- JVM内存与对象创建:运行时数据区包括堆、栈、方法区、程序计数器等。Person对象在堆中分配,类信息存于元空间(Metaspace),栈中存放对象引用。
- G1 vs CMS:CMS追求低延迟,基于标记-清除,易产生碎片;G1基于Region分区,支持整理内存碎片,可预测停顿时间。
- 聚簇索引与UUID:聚簇索引叶子节点直接存储数据。UUID作为主键会导致频繁页分裂,且占用空间大,影响B+树查询效率。
- 零拷贝:指数据在传输时减少内核态与用户态之间的内存拷贝次数(如mmap/sendfile),降低CPU开销。
- Hadoop进程:核心进程包括NameNode(元数据管理)、DataNode(数据存储)和SecondaryNameNode(辅助合并)。
- Spark调度:Job由Action算子触发,Stage根据宽依赖(Shuffle)划分,Task是Stage中执行的最小任务单元。