面试复盘|京东C++开发工程师 一面(已凉)
面试时间:74分钟
面试官:精神小伙
- 开局自我介绍
- 开幕雷击,面试官说简历收到10份,有5份都是这个web服务器,还去github看了原来的项目,3.2kfork。问我的跟他的有什么不同,参考了多少(此时打脸,我放了github链接),面试官点开链接去对比,发现目录结构都是一样的。。。
- 只好如实回答,参考的,思路别人的。
- 面试官问我有没有改进:我提到了几点
- 讲一下select和epoll的不同
- 讲一下select的底层实现,了解吗?我这边说错了。。。面试官说我不对
- 讲一下epoll的底层实现,源码了解吗?
- 讲一下升序链表是怎么操作的,定时器?
- 定时器是怎么和主线程交互的?epoll统一事件源,通过管道,传递信号。
- 链表怎么删除增加的,有效期多少
- 日志系统是用的开源的,还是自己写了一个日志库?答:就是一个非常简单的往文件写入的系统
- 讲讲webbench,你是怎么弄得,讲原理。因为我自己重写了一个webbench,又开始讲里面细节,还说到了我里面的一个错误...
- 讲讲协程,你实现了一个协程库?怎么实现的,用的是linux的底层函数。 都保存了什么信息?答:各种寄存器。后面还提到了用汇编来更快,保存的也更少
- 协程的好处,有了线程为什么还要协程。
- C++模版,模版里面只能传递类型吗?答:不是的,还能传递变量
- C++模版是什么时候确定类型的。答:这里打错了,应该是全部在编译时期
- C++里面的智能指针了解吗?都有哪些 讲讲
- 为什么要有weak_ptr
- shared_ptr引用计数是线程安全的吗?
- 自旋锁 cas里面有哪几步?两步对吧,那怎么保证他们这两步是原子性的呢?有没有看过底层实现?没有
- 讲讲移动语义?你的意思是移动之后原来的就不能用了吗?如果移动的是左值,左值也不能用了 吗?这块答得不好,细节一扣有点露馅
- 讲讲完美转发,是干什么的
- 讲讲unordered_map和map,底层实现?增删改查复杂度是多大的?
- 平时是怎么调试程序的?gbd
- 常用的gdb命令有哪些?如何调试多线程呢?
- 有没有遇到过程序崩溃的情况?条件反应 core dump,然后问如何调试core dump? 如何定位错误?
算法题:
240. 搜索二维矩阵 II
反问:部门技术栈?做推荐架构的
学习方向?做一些工业级的项目,别做开源的demo项目,不知道你的具体实力。
说实话,京东面试很离谱,最后问一下有什么不足需要后面继续学习的地方,面试官说都挺好的,然后反手给挂了~无语