嘛,日常失败。每次失败都想写一个总结但是总是坑了,我如果每次都好好写总结或许是比较好的事情。

问题和回答

以前我弱于概率论和底层知识的问题,所以恶补了一下,结果这次的问题简单到让人想吐槽…而且还有很多别的想吐槽的地方。

字符串转十进制数字

面试官首先问我「给一个字符串,里面有字母,输出十进制数字。」给一张纸上写 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,没有扎扎实实学网络真是抱歉了。在纸上画了一个维基上的这张图:

Connection_TCP

问我这样有什么用。我脑抽,想当然地回答「既要确认客户端到服务器的线路是否通畅,也要确认服务器到客户端的线路是否通畅。」

实际上是为了初始化序号、校验等理由。说完倒是想起来了,补了一句「还有数据包序号什么的。」

链表和数组

问链表和数组两者的区别,回答「数组是连续的一个空间,链表是通过指针连接,当然链表也可以放在连续的空间。」

复杂度:「遍历的复杂度都是 O(n),但是因为数组对缓存比较友好,而且数组可以随机访问。」

如何选择两者:「能用数组或者 vector 就用,一般不会用到链表,但有些特殊情况会用到,比如说写内存分配器,还有一些编程语言基础是建立在链表上的,比如说 LISP。」

反编译安卓游戏?

问我会不会反编译安卓游戏?不会。

后来总觉得这是这次面挂最主要的问题呀…

项目

面试官对大多数项目都没表现出什么兴趣,讲的时候蛮尴尬,没法深入讲下去。

只详细讲了一下之前比赛的拼图还原的项目,稍微说了一下 A* 算法。

总结

不管回答什么面试官都不置可否…没搭上轨进行有效交流也让我紧张,表现得很不自信,出了一些纰漏。手机忘静音了响了几下也有点手忙脚乱,OTL

总体来说没让面试官对我感兴趣,所以虽然问题都算答出来了,当时感觉还良好,结果等半天都没有等到结果,结果挂了(翻白眼)。还有一点战略上的错误就略过了。

两年前和面试官聊的很欢乐之类的事情果然是运气太好了。(那个面试官真不错呀,还加了微信,虽然没聊过…)

之前只注意到腾讯的实习生,结果错过了不少大厂的笔试,也是我心大。不过说到底也就是暑期实习。之后还有个阿里的。

努力吧,虽然感觉可能性不大。我的目标现在基本上就是毕业能有口饭吃不要失业了。【省略1000字自豹自弃】