找到你的目的,然后方法就会随之而来。——甘地
今天收到百度核心搜索部的正式offer,总结一下面经吧,希望对大家有所帮助。
一面
1、自我介绍
2、介绍实习时的经验,主要问了我做了哪些事,如何定位程序中出现的问题,然后也问了我打日志的频率的问题。
3、编程题:一个文件中每一行有一个电话号码,将151开头的改成158开头的,先写程序,如何用Linux命令解决?当时是这么写的?
cat filename | grep '[^0-9]{11}' | sed '/^151/158/' > filename2
4、MapReduce过程,同样问了,一个文件中有单词和出现的次数,统计每个单词的出现次数,用Linux命令解决?当时没有完全写出来,下来查了一下,大概这么写:
cat wordcount | awk 'BEGIN{}{wordCount[$1] += $2}END{for (key in wordCount) print key, wordCount[key }' > result
5、算法题:实现一个算法,将数组里面的元素打乱,时间复杂度越低越好(参考蓄水池抽样)。
6、C++中引用和指针的区别。
7、游戏中常见的排行榜的系统设计,主要是数据表与Cache的设计,如何把好友关系存储到数据表等。
8、之后问了些对于北京工作的看法,以后的工作的期望等等。
二面
1、自我介绍
2、介绍实习的项目,并做了哪些事?最有难度的是哪些事?
3、TCP和UDP的区别,并问了如何用UDP实现高效的协议,参考Google的QUIC。
4、非阻塞IO结合IO复用的使用,注意哪几个点?当时从边缘模式和非边缘模式来回答的,感觉回答不是很好,但是面试官表示挺有意思。
5、算法题:a->1,b->2,c->3,... ,z->26,给一个数字123,问能表示多少种字符串。典型的动态规划,考虑一些异常情况
f[n] = f[n - 1](num[n - 1] != 0) + f[n - 2] (num[n - 1] * 10+ num[n-2] >= 10 && <= 26)
三面
1、自我介绍
2、搜索引擎系统如何设计?看到这个题我是奔溃的,我设计了Proxy,检索服务,存储服务,排序服务,检索服务使用倒排索引(当时不知道,后面才知道自己用的就是倒排索引),用Trie树存储数据(当时也是随便想出来的,到底应该用什么的数据结果现在还是不明确),之后问了Cache的设计,TTL以及Cache的长度等(大概40分钟)。
3、实习的一些问题,例如实习的时间呀,做的事,为什么不留下来。
4、我自己项目的一些问题,特别细,从方案制定到迭代,甚至问到同事有情绪意见不合怎么处理等。
5、我的职业规划,他们团队做的方向。
这个面试持续了4小时,难度是我面试过最难的一次,问题深度足够深,当时发挥比较好,第二天一面面试官加了微信,感觉就比较稳了,一周后发了offer
点击作者姓名与作者大佬交流~
作者:龙少~
来源:牛客网(www.nowcoder.com)
- 互联网名企笔试真题
- 校招求职笔经&面经
- 程序员/产品/运营求职实习信息
- 程序员/产品/运营学习交流社区
网友评论