头条一面
- 自我介绍(介绍了两个项目,小型DBMS,搜索引擎)
- 数据库管理系统你实现了B+树,能说B+树的原理和优势吗(多叉树查询优势,充分利用磁盘预读特性)
- 你的DBMS怎么查询primary key>1 and primary key<100的记录的?(B+树区间查询),如果相邻主键在磁盘中的位置相差很远,会造成查询的性能问题,你会怎么解决(通过对磁盘记录进行整理,但现在想想通过设置主键自增保证相近主键的记录位于一个块中会比较好)
- mysql的事务说一下(ACID介绍了一下),事务的持久性是指什么?mysql是怎么保障持久性的(回答的很模糊,只说通过日志的undo和redo,实际上自己也不清楚)
- mysql的事务隔离级别说一下
- mysql事务的实现原理知道吗?
- 你是自己实现了pagerank算法吗?(不是)说一下pagerank算法的原理(刚开始平分权重,每轮迭代将每个点的权重分给它的出节点,迭代多轮直到权重每个节点权重基本无变化)。网页中节点那么多,内存存不下怎么办(没答上来)
- 说一下HashMap的实现原理,手写HashMap(不要求扩容和泛型,一遍写完跑通)
- 看你eclipse里面写了很多多线程的东西,能讲一下你是怎么学习多线程的吗?(简单的多线程四种创建方式,线程池及参数意义,juc源码阅读与理解)
- 多线程有什么好处(并行代码充分利用多核优势,讲了Amdahl定律)
- 线程是不是开的越多越好?(不是,线程创建开销都有损耗,要针对不同的任务,设置线程的数量,如IO密集型,线程开多一点,CPU密集型,线程开少一点)
- 后面就是关于如何学习和感兴趣的点的闲聊