诺基亚社招C++面试记录

  我在写这篇博客的时候,心情特别复杂,对于诺基亚的面试,并没有投简历,是简历挂在猎聘网上,猎头找到我问我考虑杭州的机会吗?仔细询问才知道是诺基亚,在和猎头聊天的时候问我对诺基亚了解么?我心中对诺基亚的认知还停留在手机产品部份(此处觉得自己好无知),后了解到诺基亚已经将手机相关卖给了微软,现在主要做通信服务,然后就想着试试吧,猎头将简历推给诺基亚后,两天后在午休时间12:30的时候接到了技术经理的电话,说是需要做一个简单的电话面试,约好一点,沟通还比较顺利,电面内容如下:

1、讲一下你的工作经历?

2、为什么选择现在就职的公司?

3、你工作中觉得收获最大的是那个项目?

4、你觉得在技术这条路上你有什么优点?

5、C和C++的区别?

6、看你的简历,了解常用算法?你了解哪些算法?

7、你对无线通信的看法?

8、你为什么要考虑诺基亚的工作机会?

9、进程间通信方式?共享内存是怎么实现进程间通讯的?

10、虚函数和纯虚函数有什么区别?

11、linux怎么对shell脚本加权限?

12、双向链表是如何实现的?

  以上就是电面的全部内容,总体偏基础,持续时间20分钟左右,面试完后,技术经理表示想让我过去杭州面试,我考虑自己在深圳比较远,想进行线上笔试,面试官告诉我说既然我比较珍惜这次机会,建议我去公司看看,也可以了解公司,路费和一晚住宿报销的,这么一说我觉得还可以,毕竟实地看看好点,我决定去杭州,约了周一。说好后,我立马买票,联系同学找住宿,一切都准备好了,这时候,戏剧性的事情发生了。。。我的车票是周天的,在周六大清早收到12306官网的短信,车次取消,我查看当天的动车,全部取消了,真是尴尬,我想周六去,可是周六票也没有,飞机票问了猎头好像是部分报销,而且因为车次取消是因为台风,猎头建议我注意安全,重新约时间。电话联系面试官,说希望协商面试时间,对方说需要看公司的情况再定。第二周周一接到电话,说还是希望像我说的先网上做一道编程题,我感觉不好(猎头跟我讲过在周天诺基亚有一个大型招聘会,我觉得是人已经招聘够了,不好拒绝我而已)我表示希望在周二笔试,当天回家安装TeamViewer ,约定周二八点。第二天,我早早下班回家等待笔试,到时间戏剧性的事情又出现了。。。。。。TeamViewer 连接不上,我慌了,网上搜索,看到说要注册的,立马注册,但是还是连不上,显示登陆到您的账户有问题,我很奇怪,以前有用过,记得不用登陆,直接id密码连接的,换登陆账号,卸载掉重下载安装,还是不行,这时候面试官发来短信问是否连不上,我回复是的,并发过去我的id密码,对方也连不上我,后约定第二天笔试,简直崩溃,多重波折。因为我是在官网下载的新版13,考虑到对方版本问题,自己找了两台笔记本连接,13确实不行,下载版本8刚开始可以,但是不稳定,后来直接连不上了,后来本机的软件一直显示连不上服务器,崩溃,索性不折腾了,到睡觉前再测试,发现13又可以了,心里简直凉凉的。

  第二天,如约连上了远程,发现是leetcode界面,一道编程题,题目如下:

给定一个字符串和一个整数 k,你需要对从字符串开头算起的每个 2k 个字符的前k个字符进行反转。如果剩余少于 k 个字符,则将剩余的所有全部反转。如果有小于 2k 但大于或等于 k 个字符,则反转前 k 个字符,并将剩余的字符保持原样。

示例:

输入: s = "abcdefg", k = 2
输出: "bacdfeg"

要求:

  1. 该字符串只包含小写的英文字母。
  2. 给定字符串的长度和 k 在[1, 10000]范围内。  

  leetcode原题目链接:https://leetcode-cn.com/problems/reverse-string-ii/description/

 1 class Solution {
 2 public:
 3     string reverseStr(string s, int k) {
 4         int len = s.length();
 5         if (k <= 0)
 6             return s;
 7         for (int i = 0; i < len; i = i + 2*k)
 8         {
 9             if ((len - i) > 0 && (len - i) > k)
10             {
11                 //全部反转
12                 s = reverse(s, i, len - 1);
13                 break;
14             }
15             if ((len - i) > k && (len - i) < 2*k)
16             {
17                 //反转前K个字符
18                 s= reverse(s, i, i + k - 1);
19                 break;
20             }
21             //反转前K个字符
22             s = reverse(s, i, i + k - 1);
23         }
24         return s;
25     }
26     string reverse(string s, int left, int right)
27     {
28         if (left >= right)
29             return s;
30         while (left < right)
31         {
32             char temp = s[left];
33             s[left] = s[right];
34             s[right] = temp;
35             ++left;
36             --right;
37         }
38         return s;
39     }
40 };

  在做完题后,发现不会用测试功能,以前是在牛客网刷题,发现leetcode右下角提示登陆才能提交,自己手动跑了个简单的例子,发现没问题,但是还是想测试下别的,四处找,终于找到了Playground调试按钮,进去后发现好几个没用的函数,删掉了,将main函数做了修改,发现根本无法接受输入(可能是我第一次用,没测试好),后来将测试用例写死测试,发现对的,电话告诉技术人员后,对方改了k的值,进行测试,是对的,然后让我讲讲思路,讲完后告诉我他们上周末进行了招聘,需要老大给他同步招聘的信息,在周五的时候给我答复,心里好凉凉,我鼓起勇气问是不是自己没机会了?对方说你还是有机会的,需要根据老大的信息同步,额。。。

  就此面试结束,静等后续结果,希望好运吧。

  笔试完后自己找了leetcode的中文网站,找到了题目,写了一遍,发现运行超时,好慌,感觉自己是不是题目做错了,case没测试到位,仔细检查才发现是自己写的时候粗心循环条件错了,笔试的代码是没问题的,毕竟标签是简单,做错就太打击自己了,还好虚惊一场,静等后续结果吧,祝自己好运!

猜你喜欢

转载自www.cnblogs.com/kks170716/p/9369255.html