百度研发面经

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: 版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/a724888/article/details/82702370 百度研发面经   本文首发于微信公众号:程序员江湖 百度智能云 软件研发工程师              百度今年的提前批有点奇怪,好像都不走流程,牛客上好几个百度内推的帖子,我投了几个,基本上都是百度智能云的。
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/a724888/article/details/82702370

百度研发面经

 百度智能云

软件研发工程师

 

 

         百度今年的提前批有点奇怪,好像都不走流程,牛客上好几个百度内推的帖子,我投了几个,基本上都是百度智能云的。  

        然后这些部门都安排了面试,没有冲突,所以没有动静的小伙伴可以投投别的部门试试。  

        下面是我的两篇面经,后续会继续更新,每个部门侧重点不太一样。

 

 

 

 

百度智能云研发岗  

 

好像是做控制台方面的组

 

一面:  

 

1自我介绍,项目

2 static关键字有什么用,static修饰不同东西时有什么作用,内部类用static修饰和不用static修饰有何区别。

3 hashmap,hashtable,concurrenthashmap区别和场景

4 volatile关键字有什么用

5 jvm分区讲下,作用讲下,gc算法讲一下,gc是否会有停顿或者延迟。

6 讲一下OOM和内存泄漏的例子,为什么有GC还会出现内存泄漏和内存溢出呢

7 线程和进程的区别,通信方式的区别。

8 悲观锁和乐观锁,说一下Java和数据库分别怎么实现的。

9 数据库索引说一下,除了B+树索引还有什么索引。

10倒排索引说一下,如果关键字很多,怎么优化。使用前缀树和hashmap优化。

11 前缀树的结构和原理说一下。

12 浏览器发起http请求过程,越详细越好。

13 缓存和数据库的一致性怎么保证

14 网上写代码,写了一个快排

15 没了。

 

二面:  

1 自我介绍

2 项目中难点,用到的技术

3 多线程,说一下线程的状态和状态转换,详细问

4 多线程的sleep方法和wait方法为什么来源不同,一个是object方法,一个是Thread的方法。

5 为什么object的wait和notify必须在同步块中使用,不在同步块使用会报错么,编译报错还是运行报错。

6 jvm讲一下gc吧,两个对象的引用循环依赖,会不会被垃圾回收,什么情况下会什么情况下不会呢

7 GC root是哪些位置呢,我说记不起来,他说你不用记,其实就是运行时的一些对象和变量,比如局部变量表,方法区的元数据比如fianl,static变量,本地方法栈执行的方法。  

8 数据库了解哪个。Redis说一下为什么是单线程的,不会很慢么,有什么好处。

9 Redis的IO请求模型,是不是IO多路复用呢。

10 Spring的interceptor和filter有什么区别。我说没区别,错!

11 网络这块,说一下dns请求的过程吧,dns是否会访问缓存呢,缓存在本地和浏览器,还有dns服务器上是不是都有。

12 get和post的区别讲一下,底层的实现有区别么,都是基于TCP,那么如何限制get的url长度,在哪一层限制的。

13 数据结构熟么,讲一下树和图吧,树的层次遍历使用什么结构,相应的图的遍历呢。讲讲最小生成算法,还有迪杰斯特拉。

14 数组,找到唯一一个出现两次的数。

刚开始听错,说了位运算。

a 然后讲了数组计数,hash计数,排序比较。

b 然后面试官说条件给的是1到N-1的N个数字,重新想一下。

c 说了根据数组位置和数字比较进行判断。面试官最后说可以用相加求差值来判断。

15 一个10000以下的数组,内存够。里面只有1,2,3。排下序。

a 普通排序O(nlogn)

b 荷兰旗问题,双指针解决。O(N)

c 统计数量,重放数组O(2N)

d 另外搞一个数组,把1放头,3放尾,也是双指针。O(N)。空间复杂度O(N)

16 没了。

全程50分钟

 

三面HR  

 

巴拉巴拉巴拉。基本上问题都大同小异。

 

 

 

 

百度智能云 数据库部门  

 

一面:  

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分钟,可以说是迄今为止难度最大的一个?

 

 

微信公众号【黄小斜】大厂程序员,互联网行业新知,终身学习践行者。关注后回复「Java」、「Python」、「C++」、「大数据」、「机器学习」、「算法」、「AI」、「Android」、「前端」、「iOS」、「考研」、「BAT」、「校招」、「笔试」、「面试」、「面经」、「计算机基础」、「LeetCode」 等关键字可以获取对应的免费学习资料。 


                     

 

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
3月前
|
分布式计算 并行计算 大数据
【数据挖掘】百度2015大数据云计算研发笔试卷
百度2015年大数据云计算研发笔试卷的题目总结,涵盖了Hadoop、Spark、MPI计算框架特点、TCP连接建立过程、数组最大和问题、二分查找实现以及灯泡开关问题,提供了部分题目的解析和伪代码。
52 1
|
存储 运维 资源调度
百度使用自主研发系统工具hdoctor 使SATA盘返修率低于SAS盘
据了解,百度近三年来一直使用其主导研发的系统工具hdoctor。该创新工具的应用,使SATA 硬盘的故障返修率低于比其成本及可靠性更高的SAS硬盘,有效地解决了在大数据时代,大规模大容量SATA硬盘应用背景下的高故障率、低运维效率和存储成本控制等难题,并对大幅降低云存储购置成本奠定坚实基础。
245 0
|
算法 NoSQL Java
百度研发面经整合版
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/a724888/article/details/82701251 百度研发面经整.
|
机器学习/深度学习 人工智能 算法
【独家】前百度资深科学家夏粉创业研发中国版Auto ML,两轮融资估值4亿
创建先进的机器学习模型既需要专业的技术人员,也非常耗时耗力,是企业在应用机器学习中的一大痛点。现在包括谷歌、Facebook在内的国际前沿企业都在探索让机器自主学习的路径。值得注意的是,中国一家成立仅半年的公司——智铀科技研发出全自动机器学习平台“EBRAIN”,让非专业人员也能够自如的使用机器学习。
1753 0
|
算法 C语言 机器学习/深度学习
|
算法 C语言 机器学习/深度学习
|
机器学习/深度学习
2014百度研发真题及其解析-求比指定数大且最小的“不重复数”
题目: 给定一个正整数n,求比n大的第一个“不重复数”。”不重复数“的定义:如果一个数,任何相邻两个数位上的数字都不相同,则称为不重复数。
893 0
|
机器学习/深度学习 算法 C++
最近在线笔试的一些感想和总结,阿里巴巴,腾讯,百度,360。c++研发,机器学习等岗位
持续更新中。。。 1.编程界牛人太多了,还是要好好a题,好好弄清楚基础算法,并且用代码实现 2.c/c++方向其实来回来去那么几道题,做好了记到脑子里。 下面就是我打算把不会的,不清楚的都贴上来然后好好解析做一下: 1 2 3 4 360还有一个题挺难的,下面是bbs 的解法: 5 输出结果: // jingdongtest.cpp : 定义控制台应用程序的入口点。
1204 0
|
存储 程序员 数据库
百度2013研发工程师笔试卷B
1 面向对象的三个基本元素,五个基本原则 三个基本元素: 封装 继承 多态 五个基本原则: 单一职责原则(Single-Resposibility Principle):一个类,最好只做一件事,只有一个引起它的变化。单一职责原则可以看做是低耦合、高内聚在面向对象原则上的引申,将职责定义为引起变化的原因,以提高内聚性来减少引起变化的原因。 开放封闭原则(Open-C
1451 0
下一篇
无影云桌面