京东C++提前批一面面经/答案(已凉)
刚面完,面试的小哥哥说话超级nice,但是我属实是太菜了,分享点面经攒攒运气。
建议提前进去,我提前半小时就挂上了,然后小哥哥是提前10分钟进来的,还好我来得早,不然让人家等我就不太好了。
开篇一个简单的自我介绍。然后问了一下之前实习的经历,因为实习经历比较少,这个部分很快就结束了,大概十几分钟。
然后是C++基础知识部分,这部分内容,基本上就是快问快达的形式,记得不太多了,但是都是C++ primer里的内容,基本上就是面向对象那一章以后的。
虚函数与纯虚函数的区别
带有纯虚函数的类为抽象类,无法被实例化。虚函数和纯虚函数的区别std::move是干什么的,原理是什么
相当于把原对象的所有权转移给了新对象,没有真正发生复制。 将一个左值转化为了右值。c++ 之 std::move 原理实现与用法总结什么时候不能使用引用(提示了一下返回一个局部变量的引用可以么)
返回局部变量的引用不可以,当离开函数后这个空间就会被释放。正确的做法是在堆上申请空间,不会被释放。C++不可以返回局部变量的引用或指针(接上题)那返回局部变量的std::move可不可以?(这个我之前没注意过,想了想就回答的不知道)
可以,但是不推荐。C++核心准则-F.48 不要返回使用std:move从局部变量获得的右值引用、C++ 函数返回局部变量的std::move()问题? - 神奇先生的回答 - 知乎、C++函数返回值拷贝问题? - vczh的回答 - 知乎在构造函数里能否调用虚函数(我当时回答的是可以,因为我记得primer里讲的就是可以,哪一级的构造函数调用哪一级的虚函数)
但是面试官应该更愿意听到:可以,但是不推荐。《Effective C++ 》条款9:永远不要在构造函数或析构函数中调用虚函数、构造函数中可以调用虚函数吗?一个空的类会自动包含哪些函数
我应该是回答错了,我连移动赋值移动构造的都说了。C++空类编译器自动生成的6个成员函数你所了解的c++11的新特性
C++ Primer 附录深拷贝与浅拷贝的区别,有什么危害(我说的线程安全问题,小哥哥提示析构的时候有什么影响)
当对象里边的成员有指向堆上的空间时,浅拷贝会指向同一块空间,当一个对象将这块空间释放了,其他对象都会受到影响。(回头想想这个事情有利有弊,如果能完全理解什么是浅拷贝,那同一个对象共享一些信息也是可以的啊,比如共享一个计数器)(接上题)那么什么是野指针
指向垃圾内存的指针。有两种情况,一个是没有被初始化,另一个是指向的空间被free了。C/C++内存泄露和野指针的概念C++里常用的锁(我只知道互斥锁)
C++ 11 中的几种锁线程池的作用,为什么要用线程池?当线程池满了有什么方法可以提高效率?
一方面提高了并行能力,减少了创建线程的开销,每个线程都可以复用。另一方面也可以根据系统的承受能力设置线程池的大小,而不至于创建过多线程消耗过多资源。线程池的作用
第二问我回答的使用队列缓存要执行的任务,然后取轮询队列。小哥哥似乎不是很满意,这个有没有其他的答案?解释一下虚函数表
C++虚函数表原理浅析、C++虚函数表剖析lambda里=和&的区别是什么?
C++11中的Lambda表达式构成之——捕获值列表、C++11 - Lambda 表达式用法析构函数能不能是虚函数
推荐是,要让每个子类销毁自己的成员。更详细的见primer其他的等我哪天想起来了来补充
这部分基本上十几分钟吧,问的还挺多的, 但是基本上,都是C++相关的基础,因为可能我没有相关框架使用的经历。
然后还问了一些其他的,比如数据库,nosql,redis,Docker,这部分一概,听说过,没用过。
后边问了一个设计模式,讲一下我知道的设计模式,然后我提前背了几个,就简单说了下,没展开说。还问了在写代码的时候是不是会有意识的使用设计模式,还是随意写。
最后一个部分就是刷题,一开始说让我本地编译一下,争取能过,然后我问能不能力扣直接调,小哥哥说可以,就扣了26分钟没抠出来,我从4:20做到了4:46,心都凉了。这里是不是上来先用一个n2的复杂度先做出来会好很多,我当时一开始就想着dp,然后dp翻车了,哎。
最后,提问环节,就不讲究了随便问了京东的办公地点是不是都在亦庄,他说他们组在北土城好像是,就没问别的,结束。
15号下午面完,17号晚上状态变成了初试官筛选未通过,祝各位好运。
#京东2021秋招提前批##春招##面经##C/C++##京东#