我的百度面经(共8次面试)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我的百度面经(共8次面试)相关的知识,希望对你有一定的参考价值。

参考技术A

百度智能云 数据库部门




一面:


1 数据库的事务,四个性质说一下,分别有什么用,怎么实现的。一致性没讲好。


2 讲到了redo和undo日志,问我分别有什么用,说redo日志说错了。


3 数据库的隔离性如何保证,使用悲观锁和乐观锁有何区别。MVCC的设计目的是什么,怎么使用版本号判断数据的可见性。


4 问了一道算法,1到N的所有数字,按照字典序打印,怎么做。


说了用数组排序,问复杂度,扯了半天。


怎么优化,按照数字特征顺序打印,问这个东西和什么结构比较像。提示是树,然后说了个多叉树,问我怎么实现,最后其实使用dfs遍历树的每个分支。


5 多线程并发的同步实现,有两个方法,每个方法里有a部分代码和b部分代码,我要让两个线程分别执行两个方法,并且让他们运行完a部分代码再一起向下执行,如何实现。


6 我说了用cyclicbarrier实现,互相等待await。


然后他问我怎么用信号量实现,并且提示可以再用一个线程。


然后我说了个方案。


7 问了项目


8 如何把优化递归的代码


改成尾递归或者循环。


面试官说不是,引导说用栈实现递归。


问我栈中需要压入哪些数据。他说应该是方法参数,返回值,以及返回地址。




二面:




1 自我介绍,项目 10分钟过去


2 服务器如何负载均衡,有哪些算法,哪个比较好,一致性哈希原理,怎么避免DDOS攻击请求打到少数机器。


3 TCP连接中的三次握手和四次挥手,四次挥手的最后一个ack的作用是什么,为什么要time wait,为什么是2msl。


4 数据库的备份和恢复怎么实现的,主从复制怎么做的,什么时候会出现数据不一致,如何解决。


5 今天面试太多了,记不清了。。。


6 开源的技术看过用过么,分布式存储的了解么。


7 想做什么方向的开发。


8 Linux查看cpu占用率高的进程


9 查看占用某端口的进程和某进程监听的端口


10 如何查询日志文件中的所有ip,正则表达式




三面(8.3号更新):

数据库部门真的很严格,问题都挺难的。

1 讲一下项目

2 平时了解什么操作系统 Linux,说一下Linux排查问题常用的命令,ps,top,netstat,free,du等等

3 Linux的内存管理算法,问了一下是不是页面置换算法,他说是。 说了lru和fifo,问我lru有什么缺点,没答上来。

4 Linux的文件系统了解么,讲了一下inode节点,文件和目录的原理。他问我了不了解具体的文件系统ext2,ext3,答不会。。

5 进程通信方式有哪些,问我分别怎么使用,管道有哪些类型,各有什么优缺点。

6 问我服务器硬件了解么。。一脸懵逼,问了我懂不懂Raid,瞎扯了几句就说不懂了。

7 shell了解么,没怎么写过。

8 听说你会Java,说一下JVM内存模型把,有哪些区,分别干什么的

9 说一下gc算法,分代回收说下。

10 设计模式了解么,说了7种,问我分别怎么用,实际应用过吗,稍微扯了一下。

11 mysql的引擎讲一下,有什么区别,使用场景呢。

12 查询最新的10条数据,想了好一会,order by id desc limit 10

13 MySQL的union all和union有什么区别,我瞎掰了一下,应该不对。

14 MySQL有哪几种join方式,底层原理是什么,答不会,只知道表现形式。

15 Redis了解哪些啊,数据结构和基本原理把。 问我Redis怎么做集群,答了主从哨兵和cluster。 Redis的持久化怎么做,aof和rdb,有什么区别,有什么优缺点。

16 Redis使用哨兵部署会有什么问题,我说需要扩容的话还是得集群部署。

17 分布式系统了解么,说一下Hadoop了解啥。 我说基本组件稍微了解过,简单搭过环境。

18 MapReduce的combiner干啥的,我说是合并结果的,问我啥时候会用到,答不知道。

19 Hadoop分发任务时,有个job失败了,hadoop会怎么处理,我答不知道,猜是会继续执行。。

20 hadoop分发任务,如果有一个节点特别慢拉慢了整体速度怎么办。我猜测是通过yarn分配相同的资源给每个任务,可以避免这种情况,他好像不太满意。

21 hadoop答得很烂。问了我两个10g文件比较,2g内存,重复率很高,筛选出不同的内容。我说拆成十份hash,每份两两比较hash的结果集,貌似他说OK。

22 排序算法了解哪些,巴拉巴拉。

23 用队列计算一个树的高度,我说用层次遍历记录节点高度。

24 一个黑名单集合,数据量很大,快速查询一个值是否在集合里,怎么设计,我说布隆过滤器。

25 还是上一题,说这个黑名单可能需要动态地增删改,如何设计才能避免访问响应太慢。我没思路,瞎扯了一下加硬件,用内存存,都被驳回了。然后他说算了。

26 上一题的黑名单做成分布式,怎么做。说了分片的方案,根据地址的hash值确定分片所在节点。

27 分布式数据库了解么,我不太明白他问的是啥,说不了解,感觉应该是问数据库的分布式方案。

28 有什么想问的,据他所说还有2-3轮面试,惊了。
全程50分钟,可以说是迄今为止难度最大的一个?






百度智能云 账号和消息部门




一面:


1 项目


2 讲一下AOP吧


3 动态***和静态***有什么区别


4 TCP和IP报文是否会分片,分别在什么情况下会分片。


TCP分包之后是否还会进行ip分片


5 做个题


无限长轨道。两辆车同方向开,车会滴水,怎么让他们相遇。这题简直像脑筋急转弯。




6 写一个斐波那契数列


递归式,要求改进


dp方式,要求优化空间


用三个变量代替数组进行dp,要求改进


我说数学公式,OK。




7 讲一下Linux的内存结构,我说只会JVM的,他让我说一下。


两者的内存如何映射,是什么关系,不会。




8 没了




二面


1 项目讲一下,10多分钟去了。


2 排序算法,复杂度,比较。快排的空间复杂度是logn


3 讲一下OSI七层模型,我说了5层模型,然后他让我再补充一下,问了每层的作用,问了wifi属于哪一层。


4 线程间的同步用什么方式,说了object方法。


问我使用hashmap时重写哪两个方法,为什么要重写,巴拉巴拉,什么场景下重写。


5 平时用过什么数据结构,list用哪些有啥区别。


6 Spring中的ioc和aop。ioc的注解有哪些。


autowired和resource有什么区别,作用域有哪些。


autowired如何配置两个类中的一个吗


7 写一个单例模式,有点忘却了,巴拉巴拉搞出一个双重检测的,中间改了多次。


8 Java会有内存泄漏吗,三个区分别什么情况下会产生内存泄漏






百度智能云




好像是基础研发工程师的岗位




一面


1 项目


2 队列和栈区别


3 两个栈实现队列,两个栈实现最小值栈


4 数据库的事务性质,如何实现这些性质


5 事务隔离级别有哪些,默认是什么级别。


6 已提交读有什么问题,用于什么场景


7 二叉树了解么,平衡二叉树呢,有什么场景会用到呢。


8 僵尸进程和孤儿进程是什么,分别有什么危害。


9 主从复制怎么实现。


10 Redis你用来做什么,为什么不用mq做异步队列


11 分布式文件系统了解么,HDFS讲一下原理


12 Java中一般用什么类型表示价格。


13 Java如何把byte类型转换成字符串


14 Java的string类型为什么是不可变的


15 有什么问题




百度核心搜索

一面:
1 自我介绍

2 docker和k8s了解多少

3 研究生学了哪些课程

4 操作系统了解么,讲一下进程和线程

5 死锁和处理方式

6 内存,虚拟内存和页面置换 7 网络了解么,讲一下三次握手和四次挥手

8 数据库了解多少,mysql索引,事务,锁讲了一些

9 Redis呢,讲了一下数据结构,持久化方式,使用场景

10 分布式了解哪些,负载均衡有哪些方式,说了dns,nginx,lvs和硬件,一致性问题怎么解决,说了2pc,3pc,raft和paxos,zab

10 mysql大表数据查询,怎么优化,分表,分库。

11单链表判环 使用快慢指针解决

12 完全二叉树判断:





二面:
1 项目

2 docker和kubenetes的原理和了解程度

3 docker的cgroup了解么

4 kubenetes的架构,扩容是怎么完成的。

5 Java的四种引用

6 Java的线程通信方式

7 Linux的进程通信方式

8 Java的线程池

9 算法 1 - N + 1这些数中取出N个,问剩下的是哪个。。 我说加起来相减,面试官说取巧了,不能这样。 我说比较数组下标,他还是说取巧。
于是我让他提示我一下,他说了排序再找。。额
然后想了两个空间换时间的办法,一个是用hashmap遍历两个数组。一个是合并数组后统计数字出现次数,也是hashmap

10 给定一串数字,找出所有可能的IP地址组合,比如192168111,组合是192.168.1.11,192.168.11.1。 应该LeetCode的题。之前自己没写完整,现场憋出来了。
这个代码应该没错。面试官看了二十分钟才说ok。 然后我们就这样沉默了20分钟,中间他就说了几句话。


最后面试官说他们部门一共两轮面试。

咱们下期见!答案获取方式:已赞 已评 已关~

原文出处:https://www.nowcoder.com/discuss/90112?type=post&order=jing&pos=&page=2&ncTraceId=&channel=-1&source_id=search_post_nctrack&gio_id=FD441016D0B12571A898266FE8D1C8C6-1657195040955

一年iOS工作经验,如何一举拿下百度美团快手等Offer面经(附面试题)

先简单说说我最近的面试经历吧。面试的公司很多,大部分最后都能得到令人满意的结果,我将这些体会记录下来,面了这么多公司,如果不留下什么,那岂不是太浪费了。对于我来说,这也是一次自我检查,在这次面试中总结经验,认清自己,同时希望这些对即将换工作或者打算看看其他机会的你有一些帮助。

关注作者其他文章,可以找到大神交流总部(其实做为一个开发者,有一个学习的氛围跟一个交流圈子特别重要,不管你是小白还是大牛欢迎入驻,大家一起交流学习)

以下的部分有具体的面试经历,也有自己的一些总结面试必备技能和自己的一些感想。

点击关注作者四字可以找到ios高级进阶组织

为何离开小米?

离开小米的主要原因是:我的职业规划与小米给我的规划不相符,还有就是流程化的东西太繁琐,自己有一些不适应,所以选择离开了小米。非常感谢我周总(直接领导)和冰冰(师傅),在小米的这一年中给予我非常多的帮助,在我跟领导沟通要离开的想法时,领导开诚布公的跟我聊了很多,最终我还是下定决定要离开小米,领导建议我先去面试一些公司,等找到合适的再走,裸辞的话心态上都会有一些问题,这样的领导真是没话说了,在小米很多领导都是不放人的,很多都把员工的下一家拖黄了才放人。在这一年获得的成绩:

1、二等奖转正绩效是A

2、年终绩效 A+,获得明日之星

准备

其实我很早就开始准备了,准确来说也不算准备,只是一直在总结iOS相关方面的知识,因为在华为虽然工作有时候比较多,但是还是有大把时间可以自己学习一些感兴趣的方向。从过完年回来,我就有计划的复习和总结了一些知识。

看过的书籍,这里并不是泛泛的读一遍,而是详细理解了大多数内容,通俗一点就是可以用自己的话将相应的知识解读出 来 。

Android开发艺术探索》(这本书真心不错,我反复读了4、5遍)、《iOS群英传》(比较接近开发使用,因为做过一些应用开发,读起来还是比较简单的,读了2遍)、《剑指offer》(感觉面试中碰到的算法,70%都能找到相应的题目,保证所有的题都可以手写出来就行)。4个月精读了以上书籍,还有其他的都是简单了解,这里就不列举了,读完这些书,应该可以让你上一个层次吧(妈妈再也不用担心我面试啦…)。

刷题,主要是LeetCode(大概刷了300道题左右,每天3-6道,坚持下来,需要多复习,因为很多题过一段时间会忘记),还有看过一些牛课网。

看别人的面试经验,主要在网上,这里我列举两个比较好的。

1、 iOS客户端面试题集锦

2、 iOS阿里面试题锦集

投递简历

一份好的简历是非常有必要的,需要突出你的重点和闪光点,具体怎么写简历可以参考

CodeKK说简历

有了一份好简历,接下来就是投递简历,一般是:拉钩+BOSS直聘+内推,从我这次面试机会来看,三者比例是2:2:1,也可能我工作经验还不到一年,内推滴滴、阿里和腾讯直接就把我的简历刷掉了,但是内推也是具体到某个部门,如果被刷掉也不要灰心,现在大公司基本上各个部门都有自己的hr,可以在拉头和BOSS上多投递一些,万一其他部门看中你呢?

面试经历

这里我仅仅记录一些问过的题目(能记住的),答案我就不写出来,基本上都可以在网上找到相应的答案。

一面

1、iOS一些优化方案

2、最常用的版本控制工具是什么,能大概讲讲原理么

3、UNIX常用命令

4、c语言在iOS开发中的重要性

5、源代码管理工具的作用

二面

二面面试官是Eva?反正应该不是做iOS的,iOS的相关知识问的也不多,大多是项目上的东西。

atomic的多线程安全

聊项目,都具体做了什么。

nonatomic在自己管理内存的环境

三面

应该是Eva吧,主要了解一些个人的情况,以及一些项目,最后问了期望的薪资,然后当场就给了offer。

毕竟1年多没有面试了,第一场面试还是给我了很大的自信,也知道现在自己大概能要多少工资是合适的,所以大佬们准备跳槽的时候,最好先面几家小公司,这些还是一个很不错的公司,整体的办公环境挺好的,现在也处于盈利状态,在教育类的app中也排的上名次。

快手

快手就在五道口地铁站出口不远地方,能看到很显眼的LOGO,看上去很霸气的样子,但是当我进入到快手前台的时候,连一个标示符都没有, 一度以为自己走进了假快手,好吧,我是来面试,这些都不重要,接下来接待的人员把我领进了一个小屋里,等待面试的开始。

一面

面试官是一个很fashion的人,是从小米核心部门过来的,是iOS小组的领导。

问了关于数据库的一些问题,SQLite的相关操作,没办法,我在华为唯一一个做的和iOS相关的项目,但是不太擅长数据库。 网络相关的问题,网络的五层模型,又问了TCP和TIP,还有iOS相关的长连接,这里问的比较深。

 开始iOS相关的知识,视觉控制器的生命周期(view的生命周期)内存告急的处理(手动释放不可见视图的内存和成员变量)

第一面这就算过关了等待二面。

二面

问了项目相关的问题,这部分根据自己的项目经验,由于大家的经验都不同,这里我就不详细说了。

 设定一个场景,怎么去实现相应的功能,因为快手这个部门想做社交,因此这里是问我是如何实现微信的联系人页面(包括与服务端有什么样的交互)

最后也是一个算法,写出所有数组的子序列

二面面试官是这个组的Eva,跟我讲了现在这个组的发展情况和快手现在的情况,由于快手成长很快,所以不能仅仅依靠一个APP,还需要在其他方面进行一些尝试,而这个组的任务就是在一些方面做一些尝试,大概就是这个样子。

 二面也顺利通过,接下来就是HR面了,这时候正好是12点,他们要去吃饭,不过快手是提供午餐和晚餐的,第一个面试官带给我一份饭,还不错,后来HR跟我说,现在只是过渡时期,后面午餐和晚餐会改成自助餐的形式。

三面

HR上来很亲切,问了我一些面试的情况,难不难之类的,然后又聊了聊我大学和研究生情况,我只想说我“too simple , too naive “,大概了解我后,只跟我聊我的不足,以此来压低我期望的薪水。说了一下薪资期望,加了微信,让我回去等待,说发offer大概是2周时间,因为需要走各种审批流程,让我不要着急。

 快手是一个很年轻的公司,技术还是需要一定的积累,希望不要像小咖秀一样昙花一现。

美团外卖

 一面

1、简历上写的项目问了一遍,然后开始问知识点。

 2、volley的源代码,在图片缓存部分讨论了挺长时间,http中缓存机制,

 3、视觉控制器的生命周期

4、数据库

5、多线程(NSTread、NSOPeration、GCDA+block)

 6、http协议get post的区别

7、手机适配一些方案

 8、真机调试、项目上线注意事项

9、静态方法是否能被重写

这些大概聊了1个半小时,开始的时候还有些紧张,慢慢聊开了,就好多了,面试官的语速有点快,老是需要面试官重复一遍,我也不经意间语速也变快了,不过能看出来面试官还是很厉害的。

二面

2次握手和3次挥手的原因,以及为什么需要这样做。

 1、id和nill代表什么(nill和NULL的区别)

 2、向一个nill对象发送消息会发生什么?

 3、进程与线程区别

4、写一个NSString类的实现

 5、http中的同步和异步

 聊了一些项目上做的东西,问了问职业规划 由于二面面试官不是做iOS,本来面试我的人临时开会去了,所以这一轮面试没怎么问iOS相关知识,不过二面面试官一直是微笑,所以这一轮很轻松,更像是一起讨论问题。

面试完已经是下午4:30了,由于面试当天是星期五,而周五美团的会议比较多,所以等了会,二面面试官说三面面试官在开会,面试另约时间,我还是说这次一次面试完吧,这一等就等了2个半小时,期间hr跟我说三面面试官是个大牛。

三面

我认为iOS做的优秀的几个地方,然后又根据我说的问了问比较深入问题。

 1、iOS是如何进行资源管理的。

 2、Python比较重要的几个特性

3、网络五层结构,每一层协议,由于我网络不是很好,还问了一些其他的问题(例如MAC地址和ip地址的区别等)。

 为什么离开原来公司,以及职业规划,然后因为面试完大概就晚上8点了,就先让我回去,下周让HR跟我联系,我想这是应该通过面试了吧。

 美团技术还是很厉害的,从面试官的水平就可以看出来,尤其是外卖核心部门,办公环境是不错,但是感觉就是有点乱,不知道是不是因为今天面试的人很多,基本上一直有很多人来回走动,有一些嘈杂。

百度

梦寐以求的百度终于找我来面试了,之前不管是内推还是网络上投递都被拒绝了,原因是我工作不到一年,没办法谁让马云爸爸太厉害,我投递的是杭州的天猫,是做虚拟现实的小组(刚听到这个名字感觉和自己不太相符),这是我到面试完后,才知道的,面试官也跟我说iOS上的需求可能不会很多,更多的是AR技术在iOS上的应用,包含OpenGL等技术。

一面

询问了我博客上写的一些东西,从项目立意谈起,到设计,再到详细的技术实现,可谓是面面俱到,由于自己写的博客还是比较熟悉,回答的还不错。

 1、GLSurfaceView的相关知识,OpenGL,Shader,绘制流程。

2、询问当前做的项目,以及到具体的实现和优化。

3、多进程间的通讯,Binder机制。

4、询问看过哪些框架源码,EventBus,Volley讲了一下。

大概聊了一个小时左右,聊得还可以,基本上都回答上了,中间给了我很多建议,不懂的地方,也会仔细跟我讲解一番,其实有一半的时间都是跟我聊产品,为什么这个产品好,怎样做才能迎合市场,然后怎么设计整个产品等,感觉跟我现在水平不是一个层次的,果然,第二天就给我发了一封邮件,说我现在暂时不太合适投递的岗位。

面试结果

除了阿里淘宝外,其他的公司基本都拿到offer,这段时间把小米这边的工作都交接完,休息几天,如果有空的话回家停几天。

最后总结

自己对于互联网有一些小小的见解:随着资本的冷却,整个互联网市场也逐渐的冷静下来。iOS应用开发从一开始能说几个四大组件的名词,能随便写个监听事件,就能拿到高达上万的月薪的时代了。归根到底并不是工作难找了,而是iOS应用开发工程师这个职位已经趋于正常,再也不是没什么技术也能拿高工资的香饽饽。当然这个也不是绝对的,对于中高级的开发人员来说,市场还是比较缺少的,尤其是知名企业对于招聘员工来说,不仅要求有过硬的技术,还要求有高素质,好的教育背景等等。总的来说,高工资可以给你,但是前提条件是你要足够优秀,或者说让面试官觉得你很优秀。

其实面试过程就是一个把你自己推销给别人的过程,对于我们(毕业不久的同学,因为我毕业不到一年)来说就是要让面试官感觉你技术好,有培养价值。感慨有点多了,还是来点干货吧,大概列举一下每一轮面试的大概范围和深度,但是也不是绝对的,还是要看具体情况。

笔试

近一段时间的面试经历来说,一、二面的问题没有什么很大的区别(公司基本上都有3面技术面,但是也有例外,我在美团就是2面技术面。),基本上都是一线开发人员。主要考察你是否有牢固的基础知识和是否在平常开发中能熟练使用。

是否能讲解清楚你所做的项目,以及使用到的相关知识。

1、iOS基础知识

2、Python基础知识,大概是多线程,线程安全,集合类,JVM,类相关知识等。

3、iOS一些源码的阅读

 4、优秀的第三方框架源码阅读

四面

一般公司都是三轮技术面,但是也有四轮技术面的,不过不多。很多公司基本上每一轮面试官都会记录他所询问的问题,以便给下一轮面试官作参考,还有就是避免对同一个知识点多次询问。所以到了这轮面试,基本上不会再询问比较基础的知识。

会从两个方面考察,

1、广度:比较新的技术(多线程,插件化等),http协议,数据库,iOS(一般不会询问之前面试官问过的问题)。

2、深度:一般会通过1或2个问题来考察,例如:项目中的贡献,所做的优化。设计能力,基本上不多,这个要看面试的岗位,因为我这里面试的只是高级开发,并不是架构。

工作中的亮点和突出。

HR面

基本上到了这轮,你就算通过面试了。hr会询问一些你的经历,最主要的还是和你商定薪资待遇。在这轮,大家应该要对自己的薪资水平有一个大体的了解,一般都是在原来的工资基础上增长20%~30%的样子,当然,如果你在面试过程中表现非常优秀,也可以不受这个限制。当然如果公司诚心要你,就算你要的工资过高,hr也会委婉的告诉你,不会直接把你pass。



以上是关于我的百度面经(共8次面试)的主要内容,如果未能解决你的问题,请参考以下文章

一次令人窒息的百度面试

一年iOS工作经验,如何一举拿下百度美团快手等Offer面经(附面试题)

一次阿里 P7 的面经,分享给大家

如何准备机器学习工程师的面试 ?

面经|百度Java研发工程师

「面经」阿里蚂蚁金服 offer 之路