- 时间:1小时10分钟
过程
- 简单的自我介绍
- 看你简历里面有几个点:mysql, redis,那么就这从几个点开始吧
- 你只会python吗?其他的呢?(答:以前用java,不过三年没用过了,忘得差不多了)
- redis有几种数据类型
- redis中的有序集合底层实现,跳表插入元素流程,时间复杂度多少(我回答平均O(logn),最坏O(n), 面试官问最后的复杂度???没搞懂)
- zrangebyscore 时间复杂度
- redis持久化有那两种?(AOF,RDB),它们的区别呢? RDB怎么生成的? fork出子进程复制的时候内存double copy了吗(当时没太懂Copy On Write技术,我回答是要copy一份,但其实不需要)
- 你讲讲redis cluster吧,set一个key,怎么知道要放到哪个节点。get一个key怎么知道要从哪个节点读?(moved重定向),那你再讲讲redis cluster扩容的时候,怎么确认迁移哪些节点?(回答:不是人工指定吗,也可以用官方提供的工具,但没用过不知道)
- 那我们来问mysql吧,你知道mysql有哪些引擎(MyISAM, INNODB),区别呢(我回答的事务,锁),怎么选呢(回答:如果读多写少就用MyISAM吧,想的是读写分离,从库可以这么选。 然后写多就INNODB吧),面试官说:那我写多还不是可以用MyISAM(好吧,这个问题我回答不上了)
- INNODB 索引, B树和B+树,为啥不用B树.
- 给一个表,有主键stuNo,索引name,你画一下树结构
- 创建一张表需要注意啥?主键一定要自增吗?(答:给我们需要经常关注的列加索引,好好利用索引覆盖;索引列的值不要太长;不需要自增;好像面试官不太满意这个回答)
- 来做个题,二叉搜索树转换为双向链表,要求空间O(1),我写了个递归中序遍历二叉树然后再转换为双向链表,没有满足O(1),然后指出来后。然后说时间不多了,问我你还有啥想法,我说那我们BFS用迭代的方法遍历,遇到一个节点就转换一下,代码没写出来
- 你有啥问题要问的吗?
结语
- 好吧,我以为一面要问计网、操作系统这些诶,结果上来就问这些,还比较深入的问, 确实很有水平啊,怪我太菜了。嗐, offer漫漫其修远兮啊~
全部评论
(2) 回帖