嘛,日常失败。每次失败都想写一个总结但是总是坑了,我如果每次都好好写总结或许是比较好的事情。
问题和回答
以前我弱于概率论和底层知识的问题,所以恶补了一下,结果这次的问题简单到让人想吐槽…而且还有很多别的想吐槽的地方。
字符串转十进制数字
面试官首先问我「给一个字符串,里面有字母,输出十进制数字。」给一张纸上写 C/C++ 代码。同时一边看简历。
因为说要输出十进制,问是输出字符串吗,得到的回答是输出一个整数…我想面试官的意思可能就是转成内部的整数吧(除非是 Decimal)。
问字母和数字的对应规则,回答「1就是1,但是字母会和数字对应,比如说会有 F。」
我趴在地上想了想,应该指的是 16 进制吧,问是不是十六进制,答复很模糊,既没有否定也没有肯定。
姑且当作 16 进制转 int 吧,一个初学者水平的小 C 代码:
int convert(const char* str) {
int num = 0;
for (int i=0; i<strlen(str), ++i) {
int n = 0;
if (str[i] >= '0' && str[i] <= '9') {
n = str[i] - '0'
}
else if (str[i] >= 'A' && str[i] <= 'F') {
n = str[i] - 'A' + 10;
}
// 类似的小写略去
num = num * 16 + n;
}
return num;
}
要挑毛病的话也能挑,比如说 strlen
没提出循环外头,异常和溢出处理什么的,还有就是涂改比较多…面试官没有任何评论,不过回过头趴在地上仔细想了想,感觉怎么都不是我的锅。
TCP 三次握手
作为常见面试题我还是之前看了一下 Wiki,没有扎扎实实学网络真是抱歉了。在纸上画了一个维基上的这张图:
问我这样有什么用。我脑抽,想当然地回答「既要确认客户端到服务器的线路是否通畅,也要确认服务器到客户端的线路是否通畅。」
实际上是为了初始化序号、校验等理由。说完倒是想起来了,补了一句「还有数据包序号什么的。」
链表和数组
问链表和数组两者的区别,回答「数组是连续的一个空间,链表是通过指针连接,当然链表也可以放在连续的空间。」
复杂度:「遍历的复杂度都是 O(n),但是因为数组对缓存比较友好,而且数组可以随机访问。」
如何选择两者:「能用数组或者 vector 就用,一般不会用到链表,但有些特殊情况会用到,比如说写内存分配器,还有一些编程语言基础是建立在链表上的,比如说 LISP。」
反编译安卓游戏?
问我会不会反编译安卓游戏?不会。
后来总觉得这是这次面挂最主要的问题呀…
项目
面试官对大多数项目都没表现出什么兴趣,讲的时候蛮尴尬,没法深入讲下去。
只详细讲了一下之前比赛的拼图还原的项目,稍微说了一下 A* 算法。
总结
不管回答什么面试官都不置可否…没搭上轨进行有效交流也让我紧张,表现得很不自信,出了一些纰漏。手机忘静音了响了几下也有点手忙脚乱,OTL
总体来说没让面试官对我感兴趣,所以虽然问题都算答出来了,当时感觉还良好,结果等半天都没有等到结果,结果挂了(翻白眼)。还有一点战略上的错误就略过了。
两年前和面试官聊的很欢乐之类的事情果然是运气太好了。(那个面试官真不错呀,还加了微信,虽然没聊过…)
之前只注意到腾讯的实习生,结果错过了不少大厂的笔试,也是我心大。不过说到底也就是暑期实习。之后还有个阿里的。
努力吧,虽然感觉可能性不大。我的目标现在基本上就是毕业能有口饭吃不要失业了。【省略1000字自豹自弃】