登录
  • #码农类general
  • #中国面经
  • #中国面试经验

百度‌‌‍‍‌‍‍‌‍‍‌‌‌‌‌‍‌‍‍‌‌‌‍‍‌‍‌‌‌‌‌‌面试经验总结

viskaz
1582
5
最近找实习,leetcode 前前后后刷了250道左右(相比于国外找工作的小伙伴自愧不如)。先后面了小米大数据岗位,爱奇艺App开发,百度基础架构部,小米, 微软:WaitList;Rej, 爱奇艺:Pass, 百度。:Pass, 最后更倾向于百度做的方向,最后去了这里。

刚刚接了百度的offer, 微软打电话让我二面....这里不得不提一下,外企面试流程相比于国内公司,速度慢很多,而且现在面试如果没有过,也不通知你,直接没有后文,微软流程慢,导致我误以为自己挂了。我的微软梦就这样gg了。所以想进国内外企的小伙伴,得稍微耐心一些。

国内面试,和国外面试最大的区别是,比较看重项目经验,算法也很重要,但没有外企那么看重。所以准备的东西真的很杂,刷题很重要,但只占30%吧, 如果有时间尽可能看看其他知识,当然字节问算法问得也比较狠....算是个例外

楼主面的是JAVA 方向的,面试前看了《深入理解java虚拟机》(其实不用全部看,主要看垃圾回收算法, java 内存分布, 双亲委派模型,类加载过程)。 《高性能MySQL》看了一部分, 《Java并发编程艺术》看了大部分。

相比于国内企业,外企对于算法的要求非常高,不仅仅要求在短时间内能想到解题思路,还需要注意代码实现的简洁,易读,细节边界条件都要考虑到,项目相比之下不那么看中。这类企业更加看中在面试中思维是否活跃, 有没有自己的想法,很多问题并没有标准的答案,需要和面试官层层探讨, 这里提一下,微软的面试官态度是真的好,一般都愿意和慢慢你商讨(可能不用加班,不用那么着急吧,哈哈哈哈)比如:Java api排序过程中, 对于对象的排序使用的是归并排序,对于普通数字排序使用的快排,你对这个有什么看法

面试了几家之后,发现虽然要准备的面很广,但是大多都是点到为止,而且几乎就是那几个问题。因为现在面试普遍现象是面试造火箭,工作拧螺丝,大多知识,面试官平时工作也用不着,面试官也是人,不可能什么都会,所以基本就是那几个经典的问题。所以这也算国内面试的一个小trick吧

1.虚拟机就是垃圾回收算法, java 内存分布, 双亲委派模型,类加载过程);

2.MySQL 就是怎么建索引,几种数据引擎,他们之间有什么区别啊,死锁怎么发生;

3. 并发知识就是Sychronized的锁的升级,写一个线程安全的单例模式,悲观锁和乐观锁,有哪几种线程池

如果觉得《Java 并发编程艺术》实在是太厚,楼主这里给个链接,把这些知识点过了,找实习应该问题不大~

4. Java知识,集合有哪些,ArrayList和LinkedList他们有什么区别,要是能背背ConcurrentHashMap的源码就更好了,

面试流程是:首先对着你的简历讲项目,然后面试官对着你的项目问一些细节,所以一定要对自己的项目比较熟悉,用的相关框架不能只会用,还要知道原理,楼主当时用了kafka, 面试前就把kafka的架构,原理扎扎实实的复习了一遍。 最好能突出个难点比如分布式,解决了高并发问题,感觉面试官还是很吃这一套,hhhhhhhhh~ 要是仅仅有CRUD 肯定不太能打动他

然后就开始问知识点,虚拟机问问,并发问问,mysql问问

最后面试官露出狡黠的微笑:我们来写个题吧。 一般一轮就一道两题。这个时候往往你就是最胆颤心惊,默默祈祷:但愿我见过类似的。 国内面试一般都在leetcode前200道出,如果不会,也要尽可能讲出想法,不能放弃治疗啊。一般来说,如果你前面的问题答得很好,面试官也不忍心让你就这么挂掉,毕竟招人不容易啊,给点小提示,稍微放点水(嘿嘿嘿)这时你要积极的说出自己的思路,能写多少是多少。当然你要会,那就缕缕思路,写出来就OK了,写完后如果有时间,最好再检查一下,脑海中运行一遍,别因为一些边界等小问题,阴沟里翻船。

下面贴出我面试时的问题:

##### 一面

1. 在kafka 中一个主题中,如何区分不同阶段的数据,这个和我的项目非常相关

2. 数据库有哪几种数组引擎,他们的区别是什么

3. 有哪几种垃圾回收算法,他们的优缺点是什么

算法题: 输入一个字符串,求这个字符串的最长回文子串,(使用中心扩散法)

##### 二面

1. sychronize 锁的升级过程

2. jvm 以及kafka参数调优,

你为什么要这样调,你这样解决了问题是乱试的,还是有一个系统瓶颈确认的过程,

3. 数据库

为什么数据库写入缓存(内存),然后再统一写入磁盘速度就快了,同样是磁盘,为什么日志写的就快,直接写入数据库速度就慢

百度搜索业务中,如何在统计海量搜索词的topN, 词的数量超过了普通计算机内存(感觉这一题非常经典,好多公司都问了)

1. 第一步:统计

当时想到的是字典树,后来想到可以使用map reduce(大数据处理方法,最经典的统计词的数量),其实这题我想复杂了,面试官的意思是使用HashMap统计一下,我以为数据量大到HashMap也存不下了。

2. 排序,使用最小堆(最大堆和最小堆容易混淆),java 有自带的API库实现,PriorityQueue, 但是面试官要求手写堆排序,面试前还是要背背排序算法,hhhh.

#### 三面

1.kubernetes以及微服务的作用是什么,为什么不用普通方法部署的程序(kubernete和我的项目相关)

写了一个数组笛卡尔乘积

A{x,x,x,x,}

B{y,y,y,y,y}

C{z,z,z,z}

。。。

求数 x,y,z,...的所有组合, A,B,C数组长度不定

感觉和leetcode,字符的全排列很相似

一次面试了四个小时,有许多问题不记得了...

写面经不易,希望大家点个赞,赚赚大米,小的在此谢过啦~~
5条回复
热度排序

发表回复