今天下午线上面了一家上海公司,车联网相关,其实说实话,面试体验挺好,这次面试着实学到了很多,面试官是位温和的小哥哥,而且技术水平也挺高,前面介绍项目和回答理论环节还好,基本上都答出来了,结果后半部分开始手撕代码了,奈何自身水平不足,手撕代码的时候连连出丑,最后只给了中下的评价,看来逃不过算法大关,得再来补补了。
项目介绍就不说了,面试的时候提问的知识点有:
- 编译工具(cmake,makefile)
- 交叉编译(跨平台生成可执行代码,比如在windows上用keil生成C51的hex文件就是)
- 静态库,动态库(静态库的链接在编译的时候完成,可单独运行但浪费空间,动态库运行的时候完成,不可单独运行)
- 死锁的四个必要条件(资源互斥,请求不释放,非剥夺,循环)
- 智能指针(为了实现自动销毁引入的,共三(四)个,
auto_ptrC11后已弃用,算上它也可以说是四个,unique_ptr,shared_ptr,weak_ptr,我说我会理论但没用过面试官直接让我不用讲了,早知道先扯一扯) - STL,vector扩容是怎么扩容(创建两倍大小的数组,复制,删除原本数组)
- STL,sort的底层如何实现(并非简单的快排,判断数据大小和递归深度,再选插入,快排,堆排序等,一次排序中会混合多种算法,如先快排到一定程度判断小数据则插入,递归深则堆排序)
- 浏览器输入网址发生了什么(DNS,HTTP,TCP等)
- 最小生成树(克鲁斯卡尔)
- 贪心算法(leetcode435一个类型的题,线段覆盖问题,我当时答的动态规划并非最优,时间复杂度n^2,面试官直接说你觉得这题这个复杂度合适吗,该怎么优化,我最后没扯上来,确实没想到是这样贪心的)
全程面了70分钟,好像问了挺多的但理论知识我基本都答上来就没有做笔记了,回归正题,来看看leetcode的第435题无重叠区间,主要是看了下leetcode的官方解答,还涉及到我之前从来没写过的Lambda表达式,也就是匿名函数。所以还是