【互联网行业-京东】面试复盘|京东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
704. 二分查找
反问:部门技术栈?做推荐架构的
学习方向?做一些工业级的项目,别做开源的demo项目,不知道你的具体实力。
说实话,京东面试很离谱,最后问一下有什么不足需要后面继续学习的地方,面试官说都挺好的,然后反手给挂了~无语
还有一些细节的东西可能忘了,想起来再补充