百度——C++开发工程师

笔试

  • 2021.9.14
  1. 19道单选(38分)
  2. 1道多选(2分)
  3. 3道编程(60分)
    • 题1:100%
    • 题2:84%
    • 题3:0%

面试

  • 2021.9.18(一二连面)

一面(约1h)

感觉主要摸清知识栈

  • 项目(SSVEP、ClipMarker),技术栈
  • 计算机网络
    • 请求网站的过程,每一步的具体情况?
    • HTTP,状态码,例如304、302…?
    • IP会变化吗?一般不会,在IPV4情况下,用NAT技术时会变
  • 数据库
    • 项目用过没?没有
  • C++
    • 学过C,C和C++中的引用和指针有啥区别?(C和C++有区别?不会)那C++的引用和指针的区别?
    • 内存泄露
    • resize 和 reverse 的区别,怎么扩容,举例问问题。参考
    • map 和 unordered_map 的区别,红黑树、哈希…
    • 哈希冲突,拉链法很常用,但线性探测和再哈希肯定也有存在的理由,它俩的优势是啥,线性探测可以直接删除吗?(想要的答案肯定是不能,但当时不理解啥意思)哈希冲突参考
    • 结构体 和 联合 的区别?参考
    • 栈 和 堆 的区别?
  • 算法
    • 1.两个栈实现一个队列(时间复杂度O(1)
      • 想了好久,最后勉强写出来,讲了思路
    • 2.讲快排思路,时间复杂度
    • 评价 硬编码能力要加强
  • 问:还有什么你会的,但我没有问到的地方……
  • 反问
    • 百度的部门是随便捞?毕竟只有一个C++研发投递入口。说现在面试不分业务,全算C++…

二面(约50min)

  • 实习转正?转正还找其他的,对实习部门有什么不满意的地方?技术栈窄
  • 脑-机接口方向,元宇宙可能实现吗?
  • 监控一个函数的运行时间,下面有两种方法
    • 1.在函数定义开始和结束的位置放时间戳
    • 2.进入函数的作用域
    • 往往使用中,两种方式得到的结果会有较大的区别,会是什么原因?(瞎打,说的不对;说不会,没有换问题的意思)
    • 有两个原因:参数拷贝赋值的时间消耗函数运行前内存清理的时间消耗
  • 算法
    • 找出一个数组的中位数
      • 暴力:排序后,取中间位置
      • 优化?使用堆,讲思路(奇偶具体细节没讲):用一个二分之一数组大小的最小堆, 遍历数组,当前元素与堆顶元素比较,若大于堆顶则删除堆顶元素并添加当前元素,若小于堆顶则继续遍历,最后最小堆堆顶元素就是中位数。
      • code,为简单起见,可默认奇数长度的数组
      • 写出来了,本题的关键是小顶堆(C++默认是大顶堆)
        priority_queue<int> pq;	// 默认大顶堆
        priority_queue<int, vector<int>, less<int>> pq;	// 大顶堆
        
        priority_queue<int, vector<int>, greater<int>> pq;	// 小顶堆
        
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值