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++工程师##校招#
全部评论
求两链表有无交叉我觉得比较好的方法是先让一个头接尾构成环,然后另一个再从头开始快慢指针找相遇节点,相遇后其中一个跳到头从头再走,另一个也同时走,相遇的位置就是交叉位置,如果没有交叉,快慢指针那里就会跳出了。
1 回复 分享
发布于 2019-09-02 17:42
他说是一共三面,还是技术面有三面啊。。。😂 面完两面之后,hr说几天内就会有后续通知。。不过感觉自己二面凉了。
点赞 回复 分享
发布于 2019-09-02 00:50
10亿数咋判断一个数是否存在呢
点赞 回复 分享
发布于 2019-09-02 09:37
我也是cpp后台开发,怎么我面了三轮技术呀
点赞 回复 分享
发布于 2019-09-02 10:59
现在有hr面么
点赞 回复 分享
发布于 2019-09-02 16:15
有20亿个字符串,找出重复次数最多的 这个怎么回答啊,字典树吗
点赞 回复 分享
发布于 2019-09-02 16:40
我是java开发。。9.1连面两面技术面 然后昨天和我预约了技术面三面。。。。
点赞 回复 分享
发布于 2019-09-03 07:55
宏函数是怎么实现的?直接返回size?
点赞 回复 分享
发布于 2019-09-04 12:33

相关推荐

点赞 评论 收藏
分享
评论
2
89
分享
牛客网
牛客企业服务