字节广告系统一面面经
大概率凉了的一面凉经
Q. 我有一个很长的链表,那要在这个链表中查询某一个节点要怎么办提升查找速度?
A. 可以加哈希(心想是不是要让我写一个LRU了,摩拳擦掌,结果并没有- -)
Q. 那哈希冲突了要怎么办(开放链法)
Q. 那如果冲突的数据比较大怎么办(链表转红黑树)
Q. 回到刚刚的点,除了哈希还有什么方式能提升链表的查询速度?
A. 可以把链表改二叉搜索树获得O(lg(n))的复杂度
Q. 那还有什么办法呢?(想不到了)
Q. 有没有了解过跳表?说一下跳表的结构是怎么做的(只知道是redis采用的数据结构,没了解过)
Q. 如何快速判断一个值在不在一堆值里面,只需要知道他在不在里面(hashset,布隆过滤器)
Q. eletic search(?)了解过吗?(no) 后来查了查可能他说的是基于Lucene的搜索服务器Elasticsearch?这我也不知道啊。。
Q. 你知道倒排索引的概念吗?(no)
Q. 数据库常见的索引结构是什么?(B+树)
Q. B+树的特点是什么?(八股文)
Q. InnoDB默认采用的什么隔离级别?(可重复读)
Q. 那你说说RR对比上一个级别解决了什么问题?(不可重复读)(面试官好像是想了半天没想起来上一个级别0.0卡了一会)
Q. 那是怎么解决这个问题的?(在这个级别下,普通的查询同样是使用的快照读,但是,和读提交不同的是,当事务启动时,就不允许进行修改操作(Update)了)
Q. 什么是乐观锁悲观锁,数据库实现一个乐观锁怎么实现?(具体怎么sql实现不太会...数据库用的不多)
Q. 现在假设我有很大批量的数据,性别、年龄、学校等等,现在要查出性别为男性的用户要怎么设计这个表(我数据库是真的不太行。就说了联合索引什么的,扯到了最左匹配之类的)
这个时候我卑微求他别再问数据库了。
Q. 那讲一下四次挥手吧
Q. 讲一下HTTP状态码500/502/504都是啥
Q. 讲一下TCP流量控制
Q. 我看你写过一点python对吧,那讲一下python web开发用过什么?(之前实习的业务有web需求所以写过一点flask,不过不是很擅长python,主要用C++)
Q. 讲一下你python实习项目里遇到的最大的困难是什么(想展开讲项目面试官没让,只让我说遇到了什么问题,这里面回答的不太好,我也确实没想过会这么问)
那做两道算法题吧
- 最长公共前缀 我说sort一下字符串数组就行了,他一直听成是sort一下字符串。。说你这么做不对 最后终于沟通明白了他又说如果不用sort应该怎么做?我说我只会sort。。他说那你先写吧 然后就写完提交了
- 前序遍历 只让我用递归不让我用迭代。。第一次见到这样的要求 面到这已经有点崩溃了 可能是他觉得我太菜了问迭代会尴尬?感觉白刷了400多道leetcode了。。
Q. 那再问一个shell脚本吧 我们source sh 和./sh脚本有什么区别吗(不太懂 平时只用./)
Q. 看CPU利用率和哪些进程应该怎么做?(top)
Q. 怎么看某一个进程的利用率比较高呢?(grep pid就能看到这个进程 后来想想也许他要的应该是top -H?)
然后就结束了这场面试,C++/操作系统和项目一点都没有问过,面试官说我应该是了解过这些基础知识,不过要做项目的话可能工程实践比较少,所以建议我还是多做点工程实践和理论知识结合一下。
但是我有两段实习开发项目也挺多可以讲的点的他并没有问也不让我讲。。
Q. 还有什么问题吗?(你们的技术栈主要是啥?)
python和go(我内推的时候以为是C++技术栈)
感觉确实是我不太匹配他们组。。所以大概率凉了吧 受打击很大 我也不想被捞起来了0.0