半个月6次面试,终于进百度HR面了

随笔2个月前发布 风萧索
31 0 0

今天和大家分享一下来自粉丝的面经投稿,他在最近半个月内疯狂的面试,光百度就约面了两个岗位,一共进行了6场面试,并且其中一个进到了 HR 面。

他的基本情况是这样的:统招本科,计算机相关专业,拥有八年的工作经验,目前处于离职状态,之前的薪资 20K+ ,期望薪资 25K+ 。

大家可以看一下他下面分享的面经的难度:

第一家:百度地图后端研发工程师

职位要求

工作职责

负责百度地图POI数据中台的研发和数据体系建设,支撑千万级数据处理压力的高可靠系统研发工作
负责POI数据建设与情报/特征/模型等层面的架构设计和工程实现,场景为大规模分布式存储、计算、数据挖掘应用
探索研究大数据解决方案在POI数据处理和情报分析方面的应用,分析与改进现有系统
负责地图部分用户端产品的研发和数据系统后台服务架构研发

职责要求

计算机相关专业本科及以上,1年以上相关工作经验
熟悉Linux及常见数据结构和算法,至少熟悉一种主流开发语言(Python/Golang/C++)
对大数据处理和数据工程与分析有浓厚的兴趣,良好的团队合作精神和主动的沟通意识

一面

自我介绍
说一下IoT云平台的搭建,遇到的困难,怎么解决的

高并发,消息队列,分库分表,redis集群,将来支撑千万级上亿级(dns负载均衡,反向代理负载均衡)

对比了无服务和微服务的优势和劣势

半夜服务器告警,解决问题

主要对接国外第三方,遇到的困难

编程题

Go两个goroutine交替打印1-10 
//G1 1 
//G2 2 
//G1 3 
//G2 4 
//… 
//G1 9 
//G2 10

用两个channel读写数据就好了

长度10初始化都为0的数组,顺序填入1-10,因为中间一个数值漏掉了,填到最后发现数组没有填满,找出漏掉了哪个数字?
例如输入[1,2,3,4,5,7,8,9,10,0] 返回 6 

写出了O(n)的,说用二分查找可以写出O(logn),这个不是很明白怎么写

反问

公司的业务,工作时间,福利等

什么时候能来上班

看offer进度

二面(没后续了)

自我介绍
为什么离职

团队解散了,协议离职

说一下IoT云平台构建的实现以及技术难点

消息队列:数据倾斜问题,数据不丢,重复消费

redis:使用hash以及Pipline

数据库:增加索引,分库分表

这里聊了很多细节问题,根据业务来说这个东西

操作系统处理死锁的方法

信号量,共享内存(这块感觉还有别的可以说)

操作系统内存管理的方法

分页,分块,FIFO,LRU(这块感觉还有别的可以说)

会不会写python脚本

说写了爬虫,爬了百度,弹出了验证码

Redis持久化

AOF,RDB还有混合持久化

Memcache知道吗

多线程,不支持持久化(具体不了解)

Redis分布式锁

加锁,解锁

登入linux终端,输命令很卡

top检查cpu使用,网络问题(在国内访问国外),内存,磁盘使用是否在临界区

使用shell统计文件中top3的ip地址

没搞定,就说了grep,awk的一些命令

磁盘满了写不进去,排查命令

df,du查看磁盘

找出文件夹中最大的几个文件,命令是什么

这块说有什么命令可以列出来,但是具体忘了

说一下ES和Redis的区别

ES是搜索引擎,redis是数据结构数据库,可以做很多事情比如消息队列,geo啥的

写代码

创建链表
1->2->3->4->5
输入2,让链表偏移
4->5->1->2->3

写出来了,但是有bug,说是看一下代码风格,说一下写题目的思路

有没有offer

暂时还没有

职业规划

深耕服务端,了解架构,有机会也可以走向管理

反问

介绍了一下业务
培训,晋升
福利

第二家:百度文库研发部_服务端研发工程师

职位要求

工作职责

负责百度文库的服务端研发工作
编写核心代码,承担关键技术攻关任务
参与服务架构设计,独立完成业务需求分析和设计
对现有服务框架的升级、性能优化和稳定性建设
推动技术与产品创新,建设良好的技术文档,帮助团队理解需求和技术架构,提高开发效率

任职资格

计算机或相关专业,本科及以上学历
两年以上 Golang/PHP/Java/Python/C++ 项目开发经验,有良好的编程习惯
熟悉 Linux 操作系统和开发环境,有良好的数据结构、算法基础和系统设计能力,熟悉技术领域的通用组件如Mysql、Redis,Kafka,ElasticSearch等,有较深的理论研究和实践经验,并能落地到业务中
熟悉web service相关技术,如高并发处理、存储与缓存,RPC、消息队列等技术
有支付、会员、文档智能化等系统相关研发设计经验者优先
有较好的团队合作精神,较强的沟通能力,主动性强,有很强的自我驱动力
有较好的产品意识,主动关注产品效果并积极推进产品方案的落实与完善

一面

自我介绍
还会别的啥语言吗

会的啊,python后端,java写android,C/C++配合Lua开发固件

go的竞争问题

比如说map,多个协程访问,可以加锁。

atomic包的CompareAndSwapInt32

编译器使用 race 发现竞争问题

map解决竞争还有什么办法

加读写锁,使用sync map

sync 包还有哪些东西?

mutex,RWmutex,waitGroup,Once

看一段代码,说下输出。

package main

import (
    "fmt"
    "sync"
    "time"
)

type Person struct {
    name string

    age int
}

var p Person

func update(name string, age int) {

    p.name = name

    time.Sleep(time.Millisecond * 200)
    p.age = age
}

func main() {

    wg := sync.WaitGroup{}
    wg.Add(10)
    for i := 0; i < 10; i++ {

       name, age := fmt.Sprintf("nobody:%v", i), i

       go func() {

          defer wg.Done()

          update(name, age)

       }()

    }

    wg.Wait()
    fmt.Printf("p.name= %s
p.age=%v", p.name, p.age)
}

输出结果不一定,go的协程执行顺序不好说

name和age不一定相等,因为有sleep

加锁可以解决

chmod 644什么意思?

给权限,4读,2写,1执行

文件所有者,文件所属的组,其他的用户

Linux 常用命令有哪些

cd,ls,ps,top,
lscpu,cat,touch,mkdir,
grep,awk,
df,du,
ifconfig,netstat,ip addr

docker的Cgroup有哪些作用?

限制cpu和内存资源用的

docker compose是用来做啥的?

使用yaml文件,管理启动和停止多个容器用的

写sql平均年龄大于35的部门id,dpid是部门id,cid是员工id,age是员工的年龄

SELECT dpid

FROM employees

GROUP BY dpid

HAVING AVG(age) > 35;

说一下mysql的慢查询,怎么排查?

打开慢查询的日志,设置慢查询的超时时间,用explain显示执行计划

将type如果是all或者是index优化到range会比较好

索引优化

索引是什么样子的时候type会是range

不是回答的很好,应该是索引的范围扫描

type还有哪些取值

ref,system,这块没答全

说一下最左匹配

老问题,(a,b,c)顺序问题

联合索引a,b,c 查询语句 WHERE c = 1 AND b IN (1, 3) AND a = 3;用的索引长度

这块a肯定是能有的,b是in不知道能不能用,得拿sql试试

redis排名怎么用,取前10的命令

Zset

说一下布隆过滤器,原理,问题,优化

bitmap实现,多个函数落在里面,如果说在,不一定在,如果说不在则一定不在,优化的话,增加bitmap的长度,设置函数的个数

缓存穿透,怎么解决

既不在redis,也不在数据库。使用布隆过滤器过滤,加载空的key,业务层增加参数校验,使用分布式锁减少访问数据库

redis分布式锁如何实现,zoomkeeper怎么实现

redis知道,zoomkeeper不太懂

redis哪个版本加入了setnx带过期时间的

谁记这东西啊(2.6.12)

常用设计模式有哪些,都是干啥用的?

工厂,抽象工厂,单例,创建对象用的

责任链,gin和goframe的中间件调next用的

装饰器,python中用来包装函数,然后可以用来计时

适配器,统一外部接口

观察者,回调函数实现异步

哪里人?目前薪资多少?
用两个go协程交替打印1,2,3,4一直到100

这种类型的题目都没啥好玩的,不过用的是他们的编辑器,没啥提示,有bug但是最后解决了

反问

zoomkeeper如何实现分布式锁,刚刚没答出来:他说自己去搜
业务有啥:说文库,ai生成内容图表,脑图啥的,等过来就知道了
上班时间:10点到晚上9点(这么卷!!!)

二面

自我介绍
其他的语言会不会

会的啊,python后端,java写android,C/C++配合Lua开发固件

go逃逸分析

变量类型不确定,有全局变量引用,给slice分配的长度太大,给slice分配的长度不定

使用gcflags case by case 分析

gin的http方法怎么实现的

这快没看,然后就说了下gin中间件的实现

gin框架的tag

说了有json,然后说gin的不太熟,但是goframe的有 method方法,v参数校验,dc描述。

gin应该和goframe差不多

channel了解吗

说了数据结构里面有哪些字段用来干啥的,说了一下channel的一些用法以及注意事项

sync包有哪些东西

mutex,rwmutex,sync.map,sync.once,sycn.pool
说了一下他们是干啥的

http状态码

1XX,2XX,3XX,4XX,5XX

http状态码499

这个没碰到过(查了一下是Nginx定义的)

redis的使用,数据一致问题

原子操作,多个操作可以用lua脚本,也可以用事务,事务用起来比较坑,回滚啥的

Mysql innodb为什么主键推荐用自增

底层B+树,不自增的话插入数据容易导致节点分裂和合并,影响效率

mysql删除数据,容量会不会变

不会变,删除只是标记为删除,要把表删了才全删了,因此删除不会释放磁盘的空间

mysql表设计优化

先说了表的字段数量优化,再说表的字段类型优化,尽量选容量少的

然后引申到mysql的优化,语句优化走索引,参数优化buffer_pool_size,锁超时优化,连接数优化

根据业务优化,读多写少加缓存等

微服务优缺点

优点:服务拆分,职责分明,语言不限,部署有工具docker,k8s,多云端部署

缺点:需要运维关注,不熟悉业务排查问题慢

微服务排查问题的方法

根据请求id,链路追踪,log记录,普罗米修斯监控,grafana告警,架构文档梳理

迭代升级频繁方案

灰度,内测用户,实时监控状态,渐进式的开放,出问题回滚还是修复,看业务影响

说做的挑战的项目

消息队列:数据倾斜问题,数据不丢,重复消费

redis:使用hash以及Pipline,bigkey拆解

数据库:性能优化,分库分表

写代码

  a:="baissbaidubbbaidu"
  b:="baidu"
  c:="baissbb"
  将a中出现的b去掉,输出的就是c了

用了两个for循环就搞定

反问

业务有啥:文库ai gc相关的
上班的时间:10点到晚上9点(看来是真的忙,这接近12小时了啊)

有后续的话,3天内就有结果了,感觉我挺不错的

三面

自我介绍
离职的原因
为什么想来北京发展
为什么毕业了想去深圳
做项目的时候合作的比较愉快的经历
有挑战的项目是哪个,如何克服挑战的
说一下有挑战的项目的一个业务的逻辑
第一份工作的离职原因
说一下python和go的一个使用上的区别
说一下团队的大小,以及在团队中承担的角色
说一下如何学习go的
写go的时候遇到了哪些问题,怎么解决的
如果出现和同事有争议的事情,该如何解决,如果同事一直坚持怎么办
领导做出了错误的决策怎么办
反问

工作内容,业务
工作时间
团队的人数,入职培训

HR面!

期待他的好消息。

欢迎关注 ❤

我的文章都首发在同名公众号:王中阳

需要简历优化或者就业辅导,可以直接加我微信:wangzhongyang1993 , 备注:XXX平台名称

© 版权声明

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...