面试完整个人都不好了,虽然很菜,当想记录下来,激励自己成长。
-
二叉树找最长路径
给定一颗二叉树,求其中的最长路径。所谓路径是指,联通两个结点的最小边数. 如下图:最长路径是6
用代码实现,没写出来。连树的前序遍历/中序遍历/后序遍历/层次遍历都忘了,还是面试官提醒才想起来。
SQL index 索引怎么实现,怎么用
没答出来,直接忘记。用 两个 栈 实现 链表
用了一个比较愚蠢的办法,面试官说太绕了,我感觉是我表述不清楚。两个链表有一个交点,如何在时间复杂度 O(n) 和 空间复杂度 O(1) 的条件下实现?
答不出来。。。
只实现了一个巨简单但空间复杂度 O(n^2) 的 。进程之间怎么通信?
只答出来socket。进程与线程之间的区别
进程包含线程,其他答不出来了。
我把自己项目 南科通 小程序介绍了一下:
面试官就针对这个问了下 HTTP, get post,502代表什么?
没回答出来。。。还问了 TCP 协议,如何保证数据完整?
我回答了 ACK 但忘记了 checksum,还好面试官提醒了一下想了起来。最后没啥可问了,就问了脑筋急转弯:
5个海盗要分100块金币,分配的协议是:按顺序一个一个来,轮到当前的海盗,他提出一个分配方案,如果包括他在内至少有50%的人同意,那么方案通过,否则这个海盗就会被喂鲨鱼,下一个海盗继续提出分配方案。 假设海盗都是纯理性而且冷血的,他们的第一原则是生存,第二原则就是拿到尽可能多的金子,第三原则是如果给的金币一样,他们倾向于选择有更少的海盗的分配方案。
问:第一个海盗怎么分配金币?
还好当时同学考过我一个类似的问题,想了想,面试官再提醒一下就回答出来了。
主要是逆向思考,从最后一个开始想。
答案:
1个人:100
2个人:100,0
3个人:99,0,1
4个人:99,0,1,0
5个人:98,0,1,0,1
即一开始的海盗给自己分配 98 个金币,第二个分配 0,第三个分配 1, 第四个,就是倒数第二个分配 0,最后一个分配 1。
总结
从晚上 8 点 45 一直面试到 10 点多一点,一直到我电脑快没电才结束(感觉面试官还想多问问),考的都是非常基础的计算机知识。面试官很友善,但是在我写不出代码的时候显得很无奈,就是因为基础太弱,要想找工作还是的好好学好基础啊。