百度面经(C++)

该博客是百度C++校招面经,包含内推和校招各轮面试问题。涉及select与epoll机制、hash冲突解决、一致性hash、redis使用等网络和数据库知识,还有内存管理、函数调用栈等C++基础,以及项目介绍、gdb调试等内容,也有非技术开放性问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

百度面经(C++)

 https://blog.youkuaiyun.com/u012658346/article/details/52671148

内推,二面跪
一面:
select & epoll两种机制的具体实现
可以用两个epoll监听同一个描述符吗,有事件发生时,怎么工作
hash怎么解决冲突
一致性hash
路由表的网段怎么存储、查找
segment fault怎么用gdb调试,两个函数循环调用会怎样
static的使用场景,在一个cpp中定义,在另一个cpp可以访问吗?static变量存放在哪里
time_wait和close_wait
服务器和客户端都是怎么工作的(从创建socket到工作的流程)
listen的两个参数分别是什么
当并发量很大时,可以进行哪些处理解决这个问题
讲一下redis的使用场景、工作原理、与竞品之间的区别

二面:
介绍项目,tun设备和tap设备的区别(项目中用到了),ping探测的周期,周期长短对结果分别有什么影响(项目中用到了)
select和epoll
如果select在监听的时候,描述符对端被关闭了会发生什么
send、recv都是阻塞的,怎么控制在一定时间内完成send、recv,如果超时就不执行,怎么跟select联系起来
socket关闭时,两端的状态变化
TIME_WAIT的作用,TIME_WAIT的时间可以小于2MSL吗,如果小于会有什么影响
epoll底层使用了红黑树,说一下红黑树的特点和优点
printf的可变参数是怎么实现的,如果参数个数不匹配会发生什么,比如字符串需要3个参数,但是只传了2个或者4个分别会发生什么
函数调用栈里面存储的是什么
malloc的返回值,还有其他内存分配函数吗,有什么区别
free怎么释放
设计一个内存管理方案

校招,三面跪
一面:
上来先写一个函数,字符串转换成整数,不能调用库函数
介绍项目
堆和栈的区别
使用指针,怎么尽量避免segment fault
linux内存管理(先说了slab,面试官说他不是问这个,然后把进程中内存分配的流程说了一下,面试官还是说他想问的不是这个,他说他想问的是段页式内存管理,好尴尬,,)
tcp、udp的区别
vector和链表的区别
struct和class的区别
java和C++的区别

二面:
介绍项目
gdb
select和epoll
token口令的实现原理,产生口令的客户端和服务端是否需要通信,具体实现接口(输入和输出)
缓存系统有两个接口:setKey(key,value,expires);getKey(key),问过期键的删除方法,并比较各种方法
服务端A和服务端B之间共享缓存
抢票或者秒杀时,如果用户量很大,服务端可能会崩溃,服务端可以有什么办法解决

三面:
gdb调试core文件
写函数atoi,并设计测试用例
剩下的都是非技术开放性问题,然而踩了无数坑

### 测试开发试经验总结与准备方法 百度测试开发岗位的试通常会注重候选人的基础能力、系统性思维以及对实际问题的解决能力。在准备过程中,以下几点尤为重要: #### 试经验分享 - **展现全性**:在回答问题时,要从多个角度出发,例如用户行为、使用环境、兼容性等[^2]。 - **避免夸大其词**:如果对某个技术点不够熟悉,应主动说明自己的掌握程度,而不是试图掩饰或编造[^3]。 - **重视基础**:基础知识是试考察的重点之一,包括编程语言(如Python、C++)、操作系统、数据库、网络等。 #### 常见试题类型 1. **功能测试相关问题**: - 如何测试一个模板? 从内容展示(文字、图片、链接)、数据传递(字符串长度、特殊字符、中英文混合)、兼容性(浏览器、操作系统、分辨率)等方进行验证[^2]。 2. **白盒测试理论**: - 白盒测试常见方法包括语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、多重条件覆盖(条件组合覆盖)等。每种方法的覆盖率要求不同,需结合具体场景选择合适的方法[^2]。 3. **编程与算法题**: - 百度试中可能会涉及代码编写和调试任务,例如实现排序算法、字符串处理、自动化脚本等。 - 示例:实现一个快速排序算法如下: ```python def quick_sort(arr): if len(arr) <= 1: return arr else: pivot = arr[len(arr) // 2] left = [x for x in arr if x < pivot] middle = [x for x in arr if x == pivot] right = [x for x in arr if x > pivot] return quick_sort(left) + middle + quick_sort(right) ``` 4. **测试设计能力**: - 考察如何设计测试用例,尤其是边界情况、异常输入、用户行为模拟等方。 #### 准备策略建议 - **刷题积累**:通过 LeetCode、牛客网等平台练习算法题和测试开发相关的题目,提升编码能力和逻辑思维。 - **模拟测试设计**:针对常见的 Web 页(如搜索框、登录页)练习写出完整的测试用例,涵盖正常流程、异常流程、边界值等。 - **深入理解测试方法论**:熟练掌握黑盒测试、白盒测试、自动化测试框架、持续集成等概念和实践。 - **项目经验梳理**:准备好至少两个与测试开发相关的项目经历,能够清晰地讲述项目的背景、挑战、解决方案及成果。 - **了解公司产品**:提前研究百度的核心产品(如搜索引擎、App),思考它们的测试策略和技术难点。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值