2016年8月百度运维部数据库岗位内推面经
2016年8月25日电话一面(1小时)
1. 简单介绍项目(是什么、为什么、做了什么)
2. 三次握手(客户端SYN=m,服务器ACK=m SYN=n,客户端ACK=n)
3.
OSI七层模型(物理层,数据链路层(802.11,wifi,atm,以太网),网络层(ip,icmp),传输层(tcp,udp),会话层,表示层,应用层(http,ftp))
4. 栈跟堆的区别(栈由系统实现,效率高,向低地址生长,函数的参数、局部变量存放在栈中,自动释放;堆由程序员实现,C和C
中使用malloc/new申请,需要手动释放,效率不如栈,向高地址生长)
5.
数据传输:服务器与服务器之间传输文件夹下的文件,一个文件夹下有10个文件,另一个文件夹下有100个文件,两个文件夹大小相等,问,哪个传输更快?(我答的10个文件更快,因为建立连接数更少,建立连接的开销比传输文件的开销大。事后讨论下,还有另一个,文件写入磁盘,要计算文件的起始位置,文件数目少的话,这个开销就小了。)
6. 数据库两个表关联的方式(笛卡尔积连接、自然连接、外连接(左外,右外,全连接)、内连接)
7. 数据库表关联的内部算法(nested loop join,hash join,sort merge
join),比较nested loop join和hash join的优缺点和适用场景
8. 数据库表里有100万条数据,想要删除80万条数据,但是因为锁的原因,删除很慢,现在想要快速删除怎么办
(看按照什么条件删除了,如果where条件走索引的话删除1w条记录完全没问题,如果数据量实在太大,尤其是占用表的数据超过剩余数据的话,比如这里只保留20万数据,建议先把要保留的数据用insert
into ... select * from ... where
...移到另外的表中,然后truncate,然后在用上面的语句把数据copy过来,或者直接drop表,重新建表,再copy数据。)
9. 数据库优化的方法(优化查询语句,调整配置)
10. 我问问题(运维部门对技能的要求)
P.S. 感谢@糖糖不爱吃糖 同学的面经,命中了好多题目。
2016年8月26日电话二面(40分钟)
1. 自我介绍
2. 简介简历项目(kvm, ssd io, aerospike,
postgresql,每个项目是什么,做了什么,对每个项目问细节,如linux的三种io调度策略,ssd特性,pg中SQL的执行流程,mvcc)
3. linux基础:软链接与硬链接,使用命令显示某个目录下的所有文件,把一个文件中的字符A全部替换成字符B
4. 算法:一个文件10万行,每行是一个单词,找出出现频率top
10的单词(我的思路是建个map,key是单词,value是频数,先遍历找出每个单词的频数,然后使用小根堆选出频数top
10,再反推得到单词)
5.
数据库:删除表数据的方法(不删除表的话用delete或truncate,然后问两者区别,删除表的话用drop),如何诊断数据库健康状态(按照严重程度,分为无法提供查询、可以查询但延迟大、可以查询但返回结果错误,处理方法先重现故障,然后查看系统日志,再不行debug代码)
6.
我问问题:百度运维部门职责和构成(运维,开发和数据库内核,共有云和私有云),有哪些产品(主流云服务器都有),如果有三面什么时候(一周以内)
2016年8月28日电话三面(276分钟)
1. 自我介绍
2. 讲讲对数据库的理解
3. 函数索引是什么?PG有函数索引吗?
4. 数据库安全有哪些知识点(认证,加密,这点楼主一直忽略了,安全是所有数据库最基础的要求)
5. PG的优点,为什么
6. 我问(这次面试的表现:面面俱到,但缺乏亮点,面试官的工作)
小结:
1. 讲清楚简历上的项目是内推电面的关键(是什么,为什么,自己做了什么)
2.
就运维和数据库这块来说,基础知识的宽度很重要,包括数据库原理与使用、linux、网络、操作系统、基本数据结构与算法(海量数据查找和排序)
3. 数据库的知识宽度,不止楼主之前重点关注的存储和查询,还有安全、网络和扩展功能,但必须有所擅长,才能顺利通关!
#百度##运维工程师#