002-【2024】卡伦特CAD-C++实习岗-一面

我人生中第一次面试,结结巴巴的,暴露出很多不足!

时间轴

自我介绍;

项目部分

基于OpenGL的简易渲染器:

  • 做这个项目的目的;
  • 这个项目里头你干什么了;
  • 有前端界面吗,还是纯后端;
  • 展示项目功能;
  • 项目中的模型加载部分是怎么做的;
  • 会自己建模吗;
  • 可能是在问OpenGL渲染管线,这里没问清楚到底在问啥;
  • VAO,VBO等概念;
  • 有遇到什么挑战性难题,是怎么解决的;
  • 这个项目还要继续写下去吗,未来有什么打算;

除了这个项目,你还做过什么;

八股部分

C++基础

  1. newmalloc的区别
  2. static关键字的作用
  3. 重载和重写的区别
  4. C++的内存管理(栈区,堆区什么的)
  5. 指针传递和引用传递
  6. 实参和形参区别
  7. 浅拷贝和深拷贝
  8. C++类的默认函数有哪些

工程问题

  1. 什么是内存泄漏,发生内存泄漏该如何解决
  2. 如何优化程序运行速度(性能优化方面)
  3. 编译链接原理,从C++源文件到可执行文件的过程?

操作系统

  1. 进程与线程的区别

数据结构

  1. 堆和栈的原理,区别

算法题拷打

[二叉树] 给定中序和后序,回答前序遍历

已知二叉树:中序遍历DBFEACHGI; 后序遍历DFEBHIGCA 求前序遍历

应使用中序遍历划分左右子树,用后序遍历去找左右子树的根节点

对于后序遍历,根节点在序列的最后一个,所以这棵树的根节点就是A。然后用中序遍历,发现A的左子树有DBFE,右子树有CHGI:

根据后序遍历,发现B是左子树的根节点,C是右子树的根节点,然后再根据中序遍历划分左、右子树的左右子树:

同理,最后还原出来的二叉树如下:

那么它的前序遍历就是:ABDEFCGHI

不用库函数求平方根

面试时候答了二分的方式,这里补充一个 牛顿迭代法

牛顿迭代法求平方根 | 奶酪型程序员的博客 (zhouqiong.tech)

[约瑟夫环]

给一个队列,每个人有不同编号,从队头开始数,每数到第三个,就让该人员出队,直到剩下最后一个人。

环形链表:

太透彻了:约瑟夫环的三种解法-腾讯云开发者社区-腾讯云 (tencent.com)

递推公式:

这或许是你能找到的最详细约瑟夫环数学推导! (zhihu.com)

反问

问岗位具体工作内容;

问人才培养方式

反思

第一次面试,除了看了点八股外,啥都没提前准备。面试的时候还磕磕巴巴的,给面试官留下了较为不好的印象。

有关自我介绍部分,

  • 这里完全没准备,只说了个人基本信息,没有把 “为什么必须要我” 这种内容(如个人优势什么的)给讲出来。

有关项目拷打部分,

  • 没有好好准备项目相关内容(如,简历部分描写不够详细;项目的介绍、结构等说辞没准备好,导致一些创新点没跟面试官说)
  • 对于一些通用问题没有准备相应的回答(如遇到挑战性难题这一类问题)

有关八股部分,

  • 看了一点面经,但还是有些不熟悉。有几个问题出现混淆/没回答完整的情况。
  • 对于数据结构还是没掌握好。

有关算法题拷打部分,

  • 还是没有准备充分,树什么的还没复习,导致一堆知识点全忘了,三道挂了两道,感觉已经g了