一面
1、字母和数字组成的字符串,将其中的字母按后面的数字进行展开(a3b40dfd2)
做好数字结束的判断就可以了
2、二维数组中只包含.和#,将#下沉到数组最下方
逐列处理,每列用两个指针,上面去找第一个遇到的#,下面去找第一个遇到的.,进行交换,直到指针相遇,结束。
3、一棵不包含重复数值的二叉树,找出给出任意两个数值的最近公共根节点
递归遍历,找到同时包含两个节点的子树的根节点,返回对应的根节点的值
4、其它问题
1、怎么用linux命令计算日志中,log_id不重复的条数
有两种方式:
(1)sort a | uniq | wc -l 先排序,再利用uniq命令去去重,这个里面可能需要用到awk切割出log_id,或者使用cut命令去切出想要统计的字符串
(2)awk '!a[$0]++' a 利用数据在自增以后不会再进入,进行去重
2、mysql数据库的索引问题,group by 和 order by 能否能用到索引
二面
1、聊了下项目相关
主要聊了下广告平台相关触发,计费,以及超消控制,还有就是生产者消费者模式。
其中有两个点回答不是特别好:
(1)数据库在拥有大量数据时,怎么能提升查找速度,这个题有注意到说不再是索引方面的优化了,就说了个用缓存去缓存最近访问的热数据,提升查询效率,这个时候面试官又问,那如果数据比较离散,缓存过大怎么办,就没太答上来。
后面想,一个是可以通过分库分表来减少单表的数据量,这样可以提升查找效率,但如果缓存过大的话,可能需要判断数据的热度之类,不是全量缓存。
(2)这个想不起来了。。。
2、基础知识方面
(1)redis使用单线程的原因,redis跳跃表的实现,为什么要使用跳跃表
(2)索引列在使用like查找时,能够命中索引吗
网友评论