9月1日 快手面经 c++后台开发
一面 40分钟
写一个宏函数,求一个数组的大小
指针和引用的区别
内联函数知道吗,什么情况下用好,什么情况下用不好
堆内存和栈内存有什么区别
说说c 内存模型
说说什么是多态,虚函数怎么实现的
vector和list有什么区别
有10亿个数,判断一个数是否存在
有20亿个字符串,找出重复次数最多的
手写代码:
实现memmove函数
判断一棵树是不是二叉搜索树
一面问了挺多c 基础,大概就只记得这么多了,一面面完后面试官让我等下,说是去通知下一位面试官,大概5分钟后,二面面试官上线,面试官是在自己家里面我的😂
二面 40分钟
我是做cv的,简历里面写了个专利,面试官以前也做过cv,就和我聊了聊专利里用到的相关算法,自己做了哪些改进
接着就问我了解哪些设计模式,我说 单例、工厂、模板、观察者、策略
接着,面试官让我写个工厂模式,我就写了个最最简单的工厂模式😂,面试官说我理解错他的意思了,给我解释了一遍,我写了出来(我这时候写的工厂模式就是在工厂类里面通过if else判断然后构造不同的派生类对象,通过基类指针返回)
接着又说,你有没有从这个工厂模式的代码里闻到一些bad smell,然后给我说了有什么问题,让我继续改进
我想了半天不知道怎么改进,然后提示我可以使用key-value的形式,我这时候才明白,把自己的思路说了一下,然后让我继续写(期间value我觉得可以存函数指针或者仿函数,但是面试官给我说可以用functional,这个我没用过,不知道怎么用,面试官还给我说怎么用😂)
接着给我出了道题,判断两个链表是否交叉,我先用暴力法,说了下思路,代码写了出来,给我说这个复杂度是o(mn),让我优化下,我说用hash,复杂度o(m n)然后把代码写出来
二面大概就这些,还有一些其他小问题记不清了
问了下流程,说今年一共三面,技术面两面
快手是到现在为止我所有面试中,面试体验最好的
许愿一个快手offer
#快手##面经##C++工程师##校招#