京东22届校招一面(50min)已挂
部门:技术与数据中心-数据与智能-智能优化部
1、问项目和实习项目
因为我两个项目都比较水,其实没啥问的,但这次问了近20分钟,第一次有人问那么细,问得我都怀疑自己做没做过这个项目了。
其中问了我的聊天室项目是用的TCP还是UDP?
我答TCP,面试官反问:如果你有100个好友在线,但你只跟一个好友聊天,那么其他99个好友的连接都要一直保持吗?然后给我解释了像微信、QQ这类聊天软件都是基于UDP的。
2、了解C++新特性吗?说一下move的用法?说一下智能指针?
C++11的新特性这块我其实比较薄弱,因为没有动手写过,都只记得一些概念。但是现在面试问得实在是太多了,move右值引用、智能指针这些一定要背牢。我就把简单的概念给面试官说了一遍。
追问:unique_ptr能作为返回值吗?unique_ptr是怎么实现独有权的?
第一问我答不知道,第二问我也不知道,但我猜是把构造函数、拷贝构造函数和赋值运算符声明为私有了。面试官说答的方向是对的,unique_ptr其实是对拷贝构造和赋值运算符使用了delete关键字,禁用了。后来我查了下资料:unique_ptr没有拷贝构造,赋值运算符,但是有move构造,move赋值,unique_ptr对象可以被函数返回。
3、说说map和unordered_map的区别?
- map底层是红黑树,增删查的时间复杂度为O(logN),其中键值是有序的;
unordered_map
底层是哈希表,增删查的时间复杂度为O(1);
追问unordered_map
是否线程安全?需不需要用锁?
这问的太细了,我直接说不知道,然后反问面试官:需要用锁吗?面试官说需要。
我后来查了下资料,根据C++标准:任何对STL集合的读取访问都是线程安全的。写入操作不是线程安全的。
4、编程题: 替换空格
面试官很照顾我,给了我一个剑指offer第五题原题:将字符串中的空格替换成
%20
,然而不争气的我又忘了最优解法怎么做了。。我上来就直接写了个最差解法,声明另一个字符串,遍历原字符串,遇到空格就在新字符串上累加%20
,否则直接累加原字符串的字符。面试官说空间复杂度太高,我又想了老半天,没想出来,求面试官给点提示。面试官说我应该先计算替换后的字符串长度,再从后往前遍历,原地构造字符串,我突然明白了,编写代码如下:
#include <iostream> #include <string> using namespace std; int main() { string s; getline(cin, s); int old_length = s.length(), real_length = 0; for (int i = 0; i < s.length(); ++i) { if (s[i] == ' ') real_length += 3; else real_length += 1; } //注意resize后s的length值等于real_length,所以前面我要保存一个old_length s.resize(real_length); real_length -- ; for (int i = old_length - 1; i >= 0; -- i) { if (s[i] == ' ') { s[real_length -- ] = '0'; s[real_length -- ] = '2'; s[real_length -- ] = '%'; } else s[real_length -- ] = s[i]; } cout << s << endl; return 0; }
resize
我还真是第一次面试时用,期间面试官问了我resize
和reserve
的区别,我说resize
会改变length
和capacity
,而reserve
只改变capacity
不改变length
或size
,这题换思路重写+debug花了近18分钟
反问环节
- 您的部门主要是做哪方面的开发工作呢?
面试官说跟深度学习相关,训练模型什么的,我大惊,难道是被算法岗捞了??
- 请问您的部门需要求职者掌握深度学习相关的知识吗?
这个不需要,这些东西进来再学都可以,你看我都没问过你TF相关的东西吧,我们这边开发主要还是用C++,更看重基础。
总结
终于意识到了自己写这个聊天室项目是有多水。。京东面试官说你这不会是课程设计吧?百度二面面试官说你这项目随便一本讲网络编程的书应该都有(暗指没有必要做)。我又能说什么呢,我就说因为我是通信专业的,主要是抱着学习的心态,通过这个简单的项目了解一下网络编程的过程。
#22届提前批##面经##校招##京东##C++工程师#这次京东的面试官给我的实习项目挑了许多刺,关键是还给我解释清楚了,说如果是他的话他会怎么做等等,我直接记下来,下次再有面试官问我:“你觉得你在项目中遇到最大的困难是什么?哪些地方可以优化?”我就可以直接抄他的答案了哈哈。
主要整理了自己2022届校招的面经。