中望软件 一面
面试时间:08/22
面试形式:视频会议
面试岗位:C++开发
Base:西安
一面(50min):
- 自我介绍:
- 为什么转码?
聊项目
- 介绍一下你整个项目的开发流程?
- 服务器项目压力测试结果怎么样?
- EPOLL看过源码吗?没看过就算了。
- 这个项目很多人都做过,你的差异点在哪里?
C++基础
- 介绍一下多态?
- 还知道哪些多态技术?函数模板
- 函数模板底层工作原理是什么?(不是很清楚,早知道就不说模板了)
- 项目中用了模板吗?继承和多态用到了吗?没有。。
- 用过哪些STL?
- vector的扩容原理?
- 扩容因子为什么是1.5-2?
- 面试官还给我补充了一下为什么不同的操作系统选择不同的扩容因子
- map和unordered_map的区别?
- 哈希法解决碰撞冲突的方式?
- 拉链法可能会被退化成O(n)的查找效率,如何优化?
- 自定义的数据机构如何在map中使用?重载
<
和==
运算符 - 除了重载,还有其他方法实现吗?类外写比较器或者写仿函数
- new和malloc的区别?
- 如何只在栈上创建对象?重载new运算符并设为私有权限
- 在使用new运算符的情况下,也只在栈上创建对象?不会
操作系统
- 介绍一下同步和互斥的概念?
- 只使用互斥锁不可以实现同步吗?
- 多线程和多进程开发的区别?
- 进程调度算法?一下卡住了,让说了一个自己最熟悉的,我就说了个时间片轮转算法。
算法
- 力扣刷了多少题?对半说了一下。
- 给我出了个题,力扣的原题,但是最近没有二刷到,所以最优方法没有做出来。(等我找到原题题号再补充)
- 第一种思路:哈希表+遍历。然后让我优化空间复杂度为O(1)
- 第二种思路:排序+遍历。
- 你会选择哪种排序算法?快排或者堆排序?
- 介绍一下堆排序的时间复杂度和空间复杂度?堆排序是稳定算法吗?
- 第三种思路:元素的值作为下标,交换两个元素的位置。第三种优化方法没有做过所以想不起来,面试官一步步引导我。
- 时间复杂度和空间复杂度说一下?
最后就是一些闲聊:
- 怎么了解到我们公司的?本科画图用过。
反问:
- 上班时间、加班时长?
- 部门主要是做什么的?3维CAD的高级组件的开发,需要C++和数学能力。
- 新人培养?
写在最后,写完面经才发现问了我这么多问题,惊了,最近面试中题量最多的一个了。
不知道是因为部门不缺人了,还是面试官对我比较感兴趣,看看有没有二面吧。