002-【2024】卡伦特CAD-C++实习岗-一面
我人生中第一次面试,结结巴巴的,暴露出很多不足!
时间轴
自我介绍;
项目部分
基于OpenGL的简易渲染器:
- 做这个项目的目的;
- 这个项目里头你干什么了;
- 有前端界面吗,还是纯后端;
- 展示项目功能;
- 项目中的模型加载部分是怎么做的;
- 会自己建模吗;
- 可能是在问OpenGL渲染管线,这里没问清楚到底在问啥;
- VAO,VBO等概念;
- 有遇到什么挑战性难题,是怎么解决的;
- 这个项目还要继续写下去吗,未来有什么打算;
除了这个项目,你还做过什么;
八股部分
C++基础
new
和malloc
的区别static
关键字的作用- 重载和重写的区别
- C++的内存管理(栈区,堆区什么的)
- 指针传递和引用传递
- 实参和形参区别
- 浅拷贝和深拷贝
- C++类的默认函数有哪些
工程问题
- 什么是内存泄漏,发生内存泄漏该如何解决
- 如何优化程序运行速度(性能优化方面)
- 编译链接原理,从C++源文件到可执行文件的过程?
操作系统
- 进程与线程的区别
数据结构
- 堆和栈的原理,区别
算法题拷打
[二叉树] 给定中序和后序,回答前序遍历
已知二叉树:中序遍历DBFEACHGI; 后序遍历DFEBHIGCA 求前序遍历
应使用中序遍历划分左右子树,用后序遍历去找左右子树的根节点。
对于后序遍历,根节点在序列的最后一个,所以这棵树的根节点就是A。然后用中序遍历,发现A的左子树有DBFE,右子树有CHGI:
根据后序遍历,发现B是左子树的根节点,C是右子树的根节点,然后再根据中序遍历划分左、右子树的左右子树:
同理,最后还原出来的二叉树如下:
那么它的前序遍历就是:ABDEFCGHI
不用库函数求平方根
面试时候答了二分的方式,这里补充一个 牛顿迭代法。
牛顿迭代法求平方根 | 奶酪型程序员的博客 (zhouqiong.tech)
[约瑟夫环]
给一个队列,每个人有不同编号,从队头开始数,每数到第三个,就让该人员出队,直到剩下最后一个人。
环形链表:
太透彻了:约瑟夫环的三种解法-腾讯云开发者社区-腾讯云 (tencent.com)
递推公式:
这或许是你能找到的最详细约瑟夫环数学推导! (zhihu.com)
反问
问岗位具体工作内容;
问人才培养方式
反思
第一次面试,除了看了点八股外,啥都没提前准备。面试的时候还磕磕巴巴的,给面试官留下了较为不好的印象。
有关自我介绍部分,
- 这里完全没准备,只说了个人基本信息,没有把 “为什么必须要我” 这种内容(如个人优势什么的)给讲出来。
有关项目拷打部分,
- 没有好好准备项目相关内容(如,简历部分描写不够详细;项目的介绍、结构等说辞没准备好,导致一些创新点没跟面试官说)
- 对于一些通用问题没有准备相应的回答(如遇到挑战性难题这一类问题)
有关八股部分,
- 看了一点面经,但还是有些不熟悉。有几个问题出现混淆/没回答完整的情况。
- 对于数据结构还是没掌握好。
有关算法题拷打部分,
- 还是没有准备充分,树什么的还没复习,导致一堆知识点全忘了,三道挂了两道,感觉已经g了