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

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

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

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

职位要求

工作职责

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

职责要求

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

一面

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

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

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

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

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

  3. 编程题

    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),这个不是很明白怎么写
  4. 反问

    公司的业务,工作时间,福利等
  5. 什么时候能来上班

    看offer进度

二面(没后续了)

  1. 自我介绍
  2. 为什么离职

    团队解散了,协议离职
  3. 说一下IoT云平台构建的实现以及技术难点

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

    redis:使用hash以及Pipline

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

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

  4. 操作系统处理死锁的方法

    信号量,共享内存(这块感觉还有别的可以说)
  5. 操作系统内存管理的方法

    分页,分块,FIFO,LRU(这块感觉还有别的可以说)
  6. 会不会写python脚本

    说写了爬虫,爬了百度,弹出了验证码
  7. Redis持久化

    AOF,RDB还有混合持久化
  8. Memcache知道吗

    多线程,不支持持久化(具体不了解)
  9. Redis分布式锁

    加锁,解锁
  10. 登入linux终端,输命令很卡

    top检查cpu使用,网络问题(在国内访问国外),内存,磁盘使用是否在临界区
  11. 使用shell统计文件中top3的ip地址

    没搞定,就说了grep,awk的一些命令
  12. 磁盘满了写不进去,排查命令

    df,du查看磁盘
  13. 找出文件夹中最大的几个文件,命令是什么

    这块说有什么命令可以列出来,但是具体忘了
  14. 说一下ES和Redis的区别

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

    创建链表
    1->2->3->4->5
    输入2,让链表偏移
    4->5->1->2->3
    写出来了,但是有bug,说是看一下代码风格,说一下写题目的思路
  16. 有没有offer

    暂时还没有
  17. 职业规划

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

    1. 介绍了一下业务
    2. 培训,晋升
    3. 福利

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

职位要求

工作职责

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

任职资格

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

一面

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

    会的啊,python后端,java写android,C/C++配合Lua开发固件
  3. go的竞争问题

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

    atomic包的CompareAndSwapInt32

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

  4. map解决竞争还有什么办法

    加读写锁,使用sync map
  5. sync 包还有哪些东西?

    mutex,RWmutex,waitGroup,Once
  6. 看一段代码,说下输出。

    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\np.age=%v", p.name, p.age)
    }

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

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

    加锁可以解决

  7. chmod 644什么意思?

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

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

  8. Linux 常用命令有哪些

    cd,ls,ps,top,
    lscpu,cat,touch,mkdir,
    grep,awk,
    df,du,
    ifconfig,netstat,ip addr
  9. docker的Cgroup有哪些作用?

    限制cpu和内存资源用的
  10. docker compose是用来做啥的?

    使用yaml文件,管理启动和停止多个容器用的
  11. 写sql平均年龄大于35的部门id,dpid是部门id,cid是员工id,age是员工的年龄

    SELECT dpid

    FROM employees

    GROUP BY dpid

    HAVING AVG(age) > 35;

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

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

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

    索引优化

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

    不是回答的很好,应该是索引的范围扫描
  14. type还有哪些取值

    ref,system,这块没答全
  15. 说一下最左匹配

    老问题,(a,b,c)顺序问题
  16. 联合索引a,b,c 查询语句 WHERE c = 1 AND b IN (1, 3) AND a = 3;用的索引长度

    这块a肯定是能有的,b是in不知道能不能用,得拿sql试试
  17. redis排名怎么用,取前10的命令

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

    bitmap实现,多个函数落在里面,如果说在,不一定在,如果说不在则一定不在,优化的话,增加bitmap的长度,设置函数的个数
  19. 缓存穿透,怎么解决

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

    redis知道,zoomkeeper不太懂
  21. redis哪个版本加入了setnx带过期时间的

    谁记这东西啊(2.6.12)
  22. 常用设计模式有哪些,都是干啥用的?

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

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

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

    适配器,统一外部接口

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

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

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

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

    二面

  26. 自我介绍
  27. 其他的语言会不会

    会的啊,python后端,java写android,C/C++配合Lua开发固件
  28. go逃逸分析

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

    使用gcflags case by case 分析

  29. gin的http方法怎么实现的

    这快没看,然后就说了下gin中间件的实现
  30. gin框架的tag

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

    gin应该和goframe差不多

  31. channel了解吗

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

    mutex,rwmutex,sync.map,sync.once,sycn.pool
    说了一下他们是干啥的
  33. http状态码

    1XX,2XX,3XX,4XX,5XX
  34. http状态码499

    这个没碰到过(查了一下是Nginx定义的)
  35. redis的使用,数据一致问题

    原子操作,多个操作可以用lua脚本,也可以用事务,事务用起来比较坑,回滚啥的
  36. Mysql innodb为什么主键推荐用自增

    底层B+树,不自增的话插入数据容易导致节点分裂和合并,影响效率
  37. mysql删除数据,容量会不会变

    不会变,删除只是标记为删除,要把表删了才全删了,因此删除不会释放磁盘的空间
  38. mysql表设计优化

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

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

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

  39. 微服务优缺点

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

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

  40. 微服务排查问题的方法

    根据请求id,链路追踪,log记录,普罗米修斯监控,grafana告警,架构文档梳理
  41. 迭代升级频繁方案

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

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

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

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

  43. 写代码

      a:="baissbaidubbbaidu"
      b:="baidu"
      c:="baissbb"
      将a中出现的b去掉,输出的就是c了
    用了两个for循环就搞定
  44. 反问

    1. 业务有啥:文库ai gc相关的
    2. 上班的时间:10点到晚上9点(看来是真的忙,这接近12小时了啊)
  45. 有后续的话,3天内就有结果了,感觉我挺不错的

三面

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

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

    HR面!

    期待他的好消息。

    欢迎关注 ❤

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

需要简历优化或者就业辅导,可以直接加我微信:wangzhongyang1993 , 备注:思否或者sf


王中阳Go
799 声望295 粉丝