字节跳动 c++开发岗(大三实习) 一面视频面试 (通过)

一个不善言谈的严肃小哥,从之前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就轻视这些面试常用算法题,坑可多了。

你可能感兴趣的:(面试)