百度2013年校园招聘 软件研发笔试题

本文回顾了一场包含简答题、程序设计题及系统设计题的笔试,涉及数据库死锁、C++面向对象思想、内存管理方式等内容,并对淘汰赛、灯状态变化、电话簿查找等算法问题进行了解答。

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

昨天的笔试。

今晚才抽出空来一下写。

下面内容基本是回忆的,正确性不敢保证。

一、简答题(30分)

1.简述数据库及线程死锁产生的必要条件,并简述如何避免死锁。

2.简述c++面向对象思想的3大要素和5大设计原则。

3.简述windows内存管理的几种方式,及其优缺点。


二、程序设计和算法题(40分)

1.某公司有1001个员工,公司组织羽毛球比赛,采用淘汰赛机制,最后选出一个冠军,问至少需要多少场比赛?并请(伪)代码模拟比赛。

2.有100盏灯和100个开关,刚开始的时候等全是灭的,someone第一轮按下所有开关(开的按一下变灭,灭的按一下变开),第二轮隔一个按一下(偶数个按),第三轮隔2个(3的倍数个按),求第100轮之后有多少盏灯是亮的。

3.有100个有序(降序)数组,每个数组有100个元素,请将这100*100=10000个数进行排序(降序)。


三、系统设计题(30分)

模拟一个电话簿的查找功能。

在手机上,1-9每个数字都对应了若干个字母,如2对应abc。

电话簿中存储了如下结构:

<姓名,电话号码>

用户按下一系列数字numStr。

有如下匹配规则:

1.数字匹配,若某电话号码的某连续子串是该numStr,则输出干电话号码对应的条目,如输入234,有<张三,15202341245>,则匹配成功。

2.字母匹配,若该numStr可以对应某字母序列,该字母序列是某人名字拼音的一个连续子串,则匹配。

给定UserList<name,phone>和数字字母对应规则dict,以及输入的numStr,求最后匹配的条目,result<name,phone>。


下面简要给出我的答案。

一、简答题

1.数据库的不懂。线程死锁的必要条件:互斥条件,占有并请求,不剥夺,环路等待。避免:银行家算法。

2.3大要素:封装、继承、多态。5大设计原则:单一职责,开闭原则,里氏替换,依赖倒置,高内聚低耦合。

3.写的固定分区分配,段页式什么的,应该错了。

二、程序设计及算法

1.一次比赛最多只能淘汰一名选手,最后只剩下冠军,故至少1001-1=1000场比赛。

2.某盏灯亮当且仅当它是平方数。用因数分解可证。

3.用优先队列,容量100。效率10000*log100.

三、系统设计题

类似于strstr的实现即可。

规则二略改strstr的实现。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值