天美j1客户端开发暑期实习二面面经
时长:2h
比起一面,明显二面问的内容会更深入一些,会有一些需要自己思考和引申的内容,不全是八股文(但八股文仍然是主要部分)。
【】里是我回答的内容,不一定对。
听说发面经可以攒人品
一、自我介绍和项目
开始的时候和一面差不多,都要求自我介绍和介绍项目,但二面不只是问功能怎么实现,还会根据回答的内容进行提问。
- 在项目中主要做了哪些内容
- (项目相关)有没有了解对话的存储形式,除了json文件还有什么?json文件在不通过插件的情况下怎么读取解析?
1. 数据结构
- 红黑树存储解决了什么问题?【时间复杂度比链表、普通二叉树低】
- map底层红黑树的每个节点需要存储什么数据?【我只说出了键和值TAT后来搜索了一下,可能还有排序规则(不是很确定,链接【STL源码剖析】总结笔记(8):红黑树(RB-tree)探究 - 知乎 (zhihu.com)),欢迎大家讨论】
2. 图形学
- 渲染管线
- 怎么实现场景中的一个物体始终朝向摄像机?【我首先是说写代码,在update()里旋转这个物体;但面试官更想听的是在图形学里的做法,我答得不太好QAQ。面试官后来也解惑了,要点是在模型变换的时候根据旋转值计算旋转矩阵,但是怎么得到这个旋转值没有细说】
- 抗锯齿方法【MSAA以及它的原理】
- 光栅化和光线追踪的区别【光栅化中的光照都是被模拟出来的,尤其是环境光这一项,是设置了一个值,但光线追踪是模拟光线在场景中的弹射,更加的真实】
3. C++
- 实现过多态吗,虚函数怎么被使用【我说了一下简单工厂模式】
- 虚函数实现机制【虚表虚指针】
4. 操作系统
- 进程和线程的区别【进程是拥有资源的基本单位,线程是程序运行的基本单位】
- 举个进程和线程的例子【电脑上打开的应用就是一个个进程】
5. 计算机网络
- TCP和UDP的区别【TCP可靠,UDP不可靠】
- TCP怎么保证可靠【ack,但除了ack还有别的,我只答了这个】
- 描述一下ack的原理流程【我答了三次握手四次挥手,但感觉面试官想问的应该是确认应答和序列号】
三、编程
1. 写一个字符串转int函数,并在主函数中给出示例测试
2. 逆序链表
我第一次二面,也是第一次在面试的时候编程,因为之前都是在力扣上刷题,直接写函数。结果这次面试自己从头开始写的时候就比较尴尬,首先是不会调试,然后做的时候有点紧张,老是出错,花了挺多时间。面试官真的很耐心,告诉我应该在哪里打断点,指出了我的调试问题,建议我多进行一些调试TT求您捞我