百度垂直搜索部门实习面经

之前面了一次百度的实习,并且拿到offer,下面是实习过程中出现的题目,希望给同样投百度的同学一个参考。

百度垂直搜索部门实习面经

一面

1. 背景问题:自我介绍,问有关项目经历,描述以前做的东西

语言:

1. C++ 关于vtable,是类对应vtable还是对象对应vtable(类)

2. 构造函数能否是虚函数(我说的比较含糊:个人认为从语言设计角度来讲不需要)

3. malloc和new的差别

4. 析构函数不是虚函数的情况给个例子,问会发生神马

5. 在一个函数new了一个以后,没有delete,用什么技术来解决此处发生的内存泄露

6. cpp编译成二进制文件的过程

7. delete数组有什么不同,如果用deletep来delete数组,会有什么问题

OS:

new分配内存的过程,,应该回答出一种内存管理方式

如果有多个程序同时申请内存,这个时候操作系统如何做到互斥访问

海量数据查询问题:

用户的输入常常会有错误,错误主要分三种情况,多一个,少一个,写错一个。

假如我们在数据库中存储了所有正确的输入,利用什么技术,例如输入一个错误query,来得到所有正确的query。

这个题目是hr提示我的,其实我也没有什么思路想到的是hash表对正确的数据存储的时候做如下处理:例如我们要存储abcdef,首先存储abcdef状态为1,说明是争取的字符串。把这个字符串的每个位置去掉一个分别存储,用来以后做用户少输入一个的检测。则里面有bcdef acdef….

在检索的时候,假如目标串是A, 检索A,如果检索到的标记是1,说明输入的是正确的。 如果检索到的字符串标记为0,则说明用户把争取的少输入了一个。现在把A的每个位置去掉一个字符。如果检索到的标记为1,说明用户多输入一个,如果检索到的标记为0,说明用户输入错一个。

二面:

1. 讲项目经历,大概一共聊了15分钟吧

2. 一个寺庙有N个台阶,一个人站在下面,他要去到第M个台阶,假设他只有2个方案可以选择 1. 向上走3台阶 2. 向下走2个台阶。请问他到达第M个台阶最少要走多少步。给出核心算法并分析复杂度

(dp可以解决)

(后来顺便扯到如果台阶个数特别多,应该如何分配dp[N], 然后又扯到局部变量,全局静态变量,和堆变量的差别,包括生命周期,分配上的大小限制,读写速度,什么情况使用哪种变量)

3. 简化题目为:有两个数组,A[N], B[M],代表两个集合。

3.1现在求出集合的交集,给出算法的复杂度

3.2 如果两个集合都已经排好序,如何求出交集

看着书里九万五千公里的绚丽。又或是和我一样,

百度垂直搜索部门实习面经

相关文章:

你感兴趣的文章:

标签云: