一个不善言谈的严肃小哥,从之前hr哪了解到是刚经过封闭式开发项目的(大牛啊)。看到就紧张的那种。(给的答案是解答情况,不一定是正解)
自我介绍
数据库了解了哪些?
redis,mysql,不精通。
redis了解哪些?
基础的5个对象数据结构和复杂度。
那对redis字符串那块有没有感觉很有意思的地方。
字符串那块的数据结构记录了有效长度、空闲空间长度,即可以保存字符串也可以保存二进制数据,二进制安全的。
进程和线程的区别?
进程是资源分配的最小单位,线程是调度执行的最小单位。一个进程可以有多个线程,一个进程至少有一个线程。
多个线程可以共享同一个进程的资源。等等。
什么是线程安全?
两个线程同时对一个变量进行加1操作。(举了这个不安全的例子)
那怎么解决?
加锁
怎么避免死锁?
按顺序加锁,解除死锁,(后来百度了一下还有银行家算法。一时给忘了当然他也没提)。我记得有一个数据库对死锁的方案就是解除死锁。因为事务比较多,所以不容易避免死锁。
此处俩人解释不清说了一通。
tcp协议很了解吗
lru算法解释一下?
我说可以给一下汉语么?(对方没回答)
然后我就:应该是操作系统那什么调度,页面调度的算法。根据最近常用的页面以后用的可能性比较大来设计的。
然后问我怎么实现?
我问:哪方面?
时间复杂度#@¥&……#¥,我也没搞懂。
你打过acm对吧,然后给了一个题:
给一列没有经过排序的数,计算最长的递增序列有几个
输入:[1,3,5,4,7]
输出 : 2
说明 : 可见上升的最长序列有这么两个,[1, 3, 4, 7] 和 [1, 3, 5, 7]
输入:[2,2,2,2,2]
输出: 5
说明: 最长的长度为 1 ,有5个情况,每个都是2
我说:我记得这个题是dp,二分优化来的。
然后让说了下思路,然后让写代码。
然后写出来之后样例都过不了(造孽啊)。
数据结构呢?
我说是跟算法绑定的。
B+树和B树有什么区别?
我说B+树是把B树的叶子都串起来。
(此处对方愣了一小会儿,冷场三秒钟。请读者自行百度一下两者的区别,,我反正晕晕乎乎的)
还有别的问题,记不太清了。
二面挂了(伤心)。最后一个算法题代码怎么调都调不好,博主我准备刷LeetCode 或者是剑指offer了。真心不能仗着打过acm就轻视这些面试常用算法题,坑可多了。