2013 豆瓣校园招聘研发类笔试题
1、将一个递归算法改为对应的非递归算法时,通常需要使用()
A、优先队列
B、队列
C、循环队列
D、栈
2、爸爸、妈妈、妹妹、小强,至少两个人同一生肖的概率是多少?
A、41/96
B、55/96
C、72/128
D、90/128
3、已知*p=NULL, *q=new char[100],sizeof(p) 和 sizeof(q)的值各为多少?
A、4 和 100
B、4 和 4
C、不确定
4、求以下程序的输出结果()
[cpp] view plaincopyprint?
1. int
foo(int
x
,
int
y)
2. {
3.
4.
5.
6. }
if(x <=
0
||
y
<=
0)
return
1;
return
4*foo(x
-
1
,
y/2);
7. cout<
}
6、描述在浏览器中敲入一个网址并按下回车后所发生的事情(尽量详细)
答:浏览器输入网址之后,首先
步骤 1:需要查找域名的 IP 地址,DNS 查找过程如下:
(1)浏览器缓存 – 浏览器的缓存 DNS 记录一段时间。 有趣的是,操作系统没有告诉浏览
器储存 DNS 记录的时间,这样不同浏览器会储存各自固定的一个时间(2 分钟到 30 分钟不
等)。
(2)系统缓存 – 如果在浏览器缓存里没有找到需要的记录,浏览器会做一个系统调用
(windows 里是 gethostbyname)。这样便可获得系统缓存中的记录。
(3)路由器缓存 – 接着,前面的查询请求发向路由器,它一般会有自己的 DNS 缓存。
(4)ISP DNS 缓存 – 接下来要 check 的就是 ISP 缓存 DNS 的服务器。在这一般都能找到
相应的缓存记录。
(5)递归搜索 – 你的 ISP 的 DNS 服务器从跟域名服务器开始进行递归搜索,从.com 顶级
域名服务器到 Facebook 的域名服务器。一般 DNS 服务器的缓存中会有.com 域名服务器中的
域名,所以到顶级服务器的匹配过程不是那么必要了。
步骤 2:浏览器给 web 服务器发送一个 HTTP 请求。请求中也包含浏览器存储的该域名的
cookies。可能你已经知道,在不同页面请求当中,cookies 是与跟踪一个网站状态相匹配
的键值。这样 cookies 会存储登录用户名,服务器分配的密码和一些用户设置等。Cookies
会以文本文档形式存储在客户机里,每次请求时发送给服务器。
步骤 3:服务的永久重定向响应
步骤 4:浏览器跟踪重定向地址
步骤 5:服务器“处理”请求
步骤 6:服务器发回一个 HTML 响应
步骤 7:浏览器开始显示 HTML
步骤 8:浏览器发送获取嵌入在 HTML 中的对象
7、有一个在给定字符串中查找子串的函数 strstr,该函数从给定的字符串 src 中查找 substr
并返回一个整数,指明 substr 第一次出现的位置(从 0 开始计数),如果找不到则返回-1。
要求:
1、实现该函数。
2、为该函数设计与实现单元测试。
说明:
1、代码中不允许使用系统已有的库函数,所有用到的库函数都需要自己实现
2、允许使用任何编程语言,函数原型自行给定。参考的 C 语言函数原型为 int strstr(char*
src , char* substr)