投递岗位:软件开发工程师-自动驾驶仿真平台
笔试
选择
- Linux 下可以查看系统启动时间的命令:
可以的命令:w,uptime,top;不可以的命令:ps。
- 以下程序执行的结果:
char *foo() { char x[512]; sprintf(x, "1,2,3,4,5,6,7,8,9,0"); return x + 6; } int main() { printf("%s", foo()); return 0; }
答案:程序一定会崩溃,原因:x 为局部指针,函数返回时会被销毁。
编程题
- 点到三角形的距离
给出一个点坐标和三角形的三个顶点坐标,求点到三角形的最短距离,若点在三角形内则返回 0,在三角形外则输出最短距离。
思路:
首先判断点是否在三角形内,判断方法为:三角形内一点,与三角形三个顶点连接组成的三个小三角形的面积之和等于原三角形的面积。面积的计算方式可通过两条边向量的叉乘来计算。
若点不在三角形内,则分别计算点到三角形三条边的距离,取最小的值即为答案。点到直线的距离可通过相对应的数学公式计算。
比较版本号
- 二维数组查找
- 接雨水
- 字符串转换为可能的 IP 地址
一面(40 mins)
- 自我介绍
- 项目 WebServer 相关:
- select, poll, epoll 的区别?
- 项目中遇到了什么困难?如何解决的?
- 项目中出现了内存泄露,你是怎么定位的? 答了使用 gdb 调试定位到具体的模块,然后分析代码实现部分。
- STL 中 vector 容器原理是什么?有什么缺点?
- 快速排序算法的原理是什么?
- git 相关: 如何撤销提交的错误代码?
- 对自动驾驶的理解,对仿真平台的理解,你觉得自动驾驶仿真是要做什么?
- 手撕代码: 很简单的实现 atoi 功能,面试官主要在问需要考虑哪些情况,怎么处理;
- 反问: 本次面试的评价,后续流程,对我有什么建议。
二面(20 mins)
- 自我介绍
- 对自动驾驶仿真的了解;
- 为什么做 WebServer 项目,答:研究生课题做的东西与岗位不符就没写,做这个项目是面向找工作编程,通过做一个综合的项目来加深对相关知识点的理解....面试官表示赞同;
- 介绍一下研究的课题和项目,然后就详细介绍了研究内容,这部分占了二面的大部分时间。
- 反问: 入职后,新人是如何培养的?
三面(30mins)
本来预约的是当天上午12:37,但等到了下午2:30,打电话过来说今天的面试流程结束了,我的三面等邮件通知....
终于在半个月之后,我差不多要忘记的时候,收到了面试预约的邮件,本来是预约了 8.7 下午的面试,可在 8.7 临时又被取消了,最后预约在了 8.9 的晚上,完成了最后的面试。
这次面试虽说是技术面,但整体上没有具体问八股文,而是对个人综合能力的考察吧,主要的面试内容如下:
- 自我介绍;
- 做过哪些项目?介绍一下?
- 最近遇到过的困难,debug 最久的经历?怎么解决的问题?
- 有拿到了 Offer 没?对岗位的有什么偏好?
- 家在哪里?意向的工作城市?
- 你在学校期间上过的印象最深的课是哪一门?
- 本科成绩怎么样?
- 参加的 xxx 比赛介绍一下?
- 你的校园经历介绍一下?
- 看你写了你擅长进行知识管理,你能介绍一下吗?(你要问这,那我可就要装逼了,直接共享屏幕炫技)
- 反问阶段,我说想问的都问过了,没有什么问题了,然后面试官开始给我介绍公司的情况,最后愉快结束,感觉问题不大。
全部评论
(19) 回帖