3进百度:百度语音技术部(3面)->百度地图架构部(3面)->百度互联网数据研发部(2面明天入职)
秋招结束,忘记所有面试知识
--------------------------------------------------------------------------------------------
科技园一号楼:百度互联网数据研发部(2面)
一面:
1.实习经历
[1]搜索词访问不到,容灾cache如何解决,数据字典服务
[2]epoll压测客户端
2.netstat命令,gdb
3.校园项目
二面:
1.hbase知不知道
2.top命令,虚拟内存,swap分区
3.分机部署单机服务器,搜索词日志特别大,内存放不下,统计前100query热词
4.代码实现n!的0个数
5.单链表冒泡排序
三面:
1.表现太差劲,没给经理面
2.晚上收到offer,9月27日明天入职[应该是又缺少打工的了]
--------------------------------------------------------------------------------------------
奎科科技大厦:百度地图(3面)
一面:
1.系统调用:异常,网络io,信号,线路
2.文件的读取过程
3.如何处理内存泄漏?
[1]通过对象的方式进行管理[例如:智能指针auto_ptr, unique_ptr ,shared_ptr,week_ptr使用方法,及原理]
[2]Effective c++中new和delete
(1)void *operator new(std::size_t count)throw(std::bad_alloc);
(2)void *operator new(std::size_t count,const std::nothrow_t&) throw();
(3)void *operator new(std::size_t count, void *ptr) throw();
[3]线程异常退出造成内存泄漏:[解决:通过异常类进行捕捉,catch到异常类对象]
4.select和epoll的区别
[1]select但进程只能打开1024个套接字[ulimit -a可以查询],epoll可以处理百万巨柄
[2]select只能处理可读可写及异常事件,epoll可以处理跟多类型的事件
[3]每一次调用select时都会进行一次内核态和用户态的拷贝,都需要重新填充待检测集合
[4]select返回的事件集合[就绪和为就绪的],采用轮询的方式来检测就绪事件,时间复杂度O(n)
[5]select采用LT处理模式,epoll有ET和EPOLLONESHOT[这两事件处理看书Linux高性能服务器编程]
[6]epoll采用回调的方式,内核检测到就绪文件描述符,触发回调函数[将文件描述符上对应的事件插入内核就绪事件队列
,内核在合适的时候将就绪事件队列中的内容拷贝到用户空间]事件复杂度O(1)
[7]epoll_wait返回到套接字都有事件
[8]epoll_wait未必高效,活动连接较多,回调函数被触发得过于频繁[不好],epoll_wait适用于连接数量多,但活动连接数较少的情况
5.TCP3次握手[状态转迁图,DOS攻击,SIGPIPE信号产生,TCP一些选项属性],TCP4次挥手[长短连接,半打开状态,keeplive属性]
6.TCP滑动窗口实现流量控制原理[累积重传GBN协议]
7.TCP拥塞控制介绍[慢开始,快重传,快回复,加性增,乘性减]Reno 版本和Taho版本[服务器端应该使用Reno版本]
8.一致性hash
9.线程TSD独有属性
10.项目:客户端[状态机]服务器[Reactor模型],开源协议thrift
11.redis单线程高效原因
二面:
1.数组长度为N,求TopK数[写代码]
2.数组长度为N,求第k个大的数字[写代码]
3.原数组有序,循环移位,求value值的下标[写代码二分解决]
比如原数组:1,4,6,9,20,移位后:20,9,1,4,6
4.数组长度为N,连续字数组最大和,并求出该子数组[写代码]
三面:
1.我们是百度地图导航
2.校招offer问题
static关键字的作用
[1]函数内部静态变量。这种变量生存期长于该函数,使得函数有一定的“状态”。使用静态变量的函数一般是不可重入的,也不是线程安全的
[2]用于文件级别(函数体之外),修饰变量或函数,表示该变量或函数只在本文件可见,其他文件看不到也访问不到该变量或函数。内部链接
[3]用于修饰class的数据成员(静态成员)。静态成员(每个class有一份),普通数据成员(每个instance有一份)
[4]静态成员函数,该函数没有this指针,只能访问class variable 和其他静态程序函数,不能访问instance variable 或 instance method,比如:单例
[5]静态函数中如何访问成员函数
--------------------------------------------------------------------------------------------
科技园3号楼:百度语音技术部
(3面)
一面:
1.编写一个单例模式代码
[1]真正项目中不需要写出DestoryInstance函数,需要在线程退出,析构函数exit(0)时释放,否则会造成,一次DestoryInstance,下一次拿到这个对象不是上一个单例对象
[2]单例+模版代码编写
派生出字类单例对象
[3]多线程单例编写
2.介绍Reactor模型(Linux高性能服务器书中有写道)
3.普通变量和static变量区别,extern用法
4.[1]epoll的ET模式介绍,有些时候,服务器度数据不能一次性将客户机发送的请求读完,客户机的请求包>内核缓冲区大小,需要多次循环读。
[2]ET和LT的区别
[3]介绍一下epoll中函数,以及它的使用[epoll数据结构红黑树,结构体有链表,回调机制]
5.线程池介绍,信号量,条件变量问题,惊群问题(Redis中也有这个问题)
6.TCP的11中状态转换图默写,
7.还了解哪些模式?状态机模式在单核服务器高效[设计模式在面试中基本会问:享元模式,迭代器模式,适配器模式等等
8.守护进程介绍
9.僵尸进程问题解决
10.指针和引用的区别
二面:
1.下面这段代码出现的问题
2.二叉排序树从大到小排序:[1]递归[2]栈
3.堆排序的使用场景
快排使用场景
排序稳定性定义+计算,是否稳定
4.编写自动锁代码:RAII机制,对象管理资源,注意资源管理,拷贝构造和等号赋值要私有化
5.static函数和普通函数区别
三面:
1.未来计划
2.有什么问题?百度校招offer问题
3.我们主要是语音架构
秋招结束,忘记所有面试知识
--------------------------------------------------------------------------------------------
科技园一号楼:百度互联网数据研发部(2面)
一面:
1.实习经历
[1]搜索词访问不到,容灾cache如何解决,数据字典服务
[2]epoll压测客户端
2.netstat命令,gdb
3.校园项目
二面:
1.hbase知不知道
2.top命令,虚拟内存,swap分区
3.分机部署单机服务器,搜索词日志特别大,内存放不下,统计前100query热词
4.代码实现n!的0个数
5.单链表冒泡排序
三面:
1.表现太差劲,没给经理面
2.晚上收到offer,9月27日明天入职[应该是又缺少打工的了]
--------------------------------------------------------------------------------------------
奎科科技大厦:百度地图(3面)
一面:
1.系统调用:异常,网络io,信号,线路
2.文件的读取过程
3.如何处理内存泄漏?
[1]通过对象的方式进行管理[例如:智能指针auto_ptr, unique_ptr ,shared_ptr,week_ptr使用方法,及原理]
[2]Effective c++中new和delete
(1)void *operator new(std::size_t count)throw(std::bad_alloc);
(2)void *operator new(std::size_t count,const std::nothrow_t&) throw();
(3)void *operator new(std::size_t count, void *ptr) throw();
[3]线程异常退出造成内存泄漏:[解决:通过异常类进行捕捉,catch到异常类对象]
4.select和epoll的区别
[1]select但进程只能打开1024个套接字[ulimit -a可以查询],epoll可以处理百万巨柄
[2]select只能处理可读可写及异常事件,epoll可以处理跟多类型的事件
[3]每一次调用select时都会进行一次内核态和用户态的拷贝,都需要重新填充待检测集合
[4]select返回的事件集合[就绪和为就绪的],采用轮询的方式来检测就绪事件,时间复杂度O(n)
[5]select采用LT处理模式,epoll有ET和EPOLLONESHOT[这两事件处理看书Linux高性能服务器编程]
[6]epoll采用回调的方式,内核检测到就绪文件描述符,触发回调函数[将文件描述符上对应的事件插入内核就绪事件队列
,内核在合适的时候将就绪事件队列中的内容拷贝到用户空间]事件复杂度O(1)
[7]epoll_wait返回到套接字都有事件
[8]epoll_wait未必高效,活动连接较多,回调函数被触发得过于频繁[不好],epoll_wait适用于连接数量多,但活动连接数较少的情况
5.TCP3次握手[状态转迁图,DOS攻击,SIGPIPE信号产生,TCP一些选项属性],TCP4次挥手[长短连接,半打开状态,keeplive属性]
6.TCP滑动窗口实现流量控制原理[累积重传GBN协议]
7.TCP拥塞控制介绍[慢开始,快重传,快回复,加性增,乘性减]Reno 版本和Taho版本[服务器端应该使用Reno版本]
8.一致性hash
9.线程TSD独有属性
10.项目:客户端[状态机]服务器[Reactor模型],开源协议thrift
11.redis单线程高效原因
二面:
1.数组长度为N,求TopK数[写代码]
2.数组长度为N,求第k个大的数字[写代码]
3.原数组有序,循环移位,求value值的下标[写代码二分解决]
比如原数组:1,4,6,9,20,移位后:20,9,1,4,6
4.数组长度为N,连续字数组最大和,并求出该子数组[写代码]
三面:
1.我们是百度地图导航
2.校招offer问题
static关键字的作用
[1]函数内部静态变量。这种变量生存期长于该函数,使得函数有一定的“状态”。使用静态变量的函数一般是不可重入的,也不是线程安全的
[2]用于文件级别(函数体之外),修饰变量或函数,表示该变量或函数只在本文件可见,其他文件看不到也访问不到该变量或函数。内部链接
[3]用于修饰class的数据成员(静态成员)。静态成员(每个class有一份),普通数据成员(每个instance有一份)
[4]静态成员函数,该函数没有this指针,只能访问class variable 和其他静态程序函数,不能访问instance variable 或 instance method,比如:单例
[5]静态函数中如何访问成员函数
--------------------------------------------------------------------------------------------
科技园3号楼:百度语音技术部
(3面)
一面:
1.编写一个单例模式代码
[1]真正项目中不需要写出DestoryInstance函数,需要在线程退出,析构函数exit(0)时释放,否则会造成,一次DestoryInstance,下一次拿到这个对象不是上一个单例对象
[2]单例+模版代码编写
派生出字类单例对象
[3]多线程单例编写
2.介绍Reactor模型(Linux高性能服务器书中有写道)
3.普通变量和static变量区别,extern用法
4.[1]epoll的ET模式介绍,有些时候,服务器度数据不能一次性将客户机发送的请求读完,客户机的请求包>内核缓冲区大小,需要多次循环读。
[2]ET和LT的区别
[3]介绍一下epoll中函数,以及它的使用[epoll数据结构红黑树,结构体有链表,回调机制]
5.线程池介绍,信号量,条件变量问题,惊群问题(Redis中也有这个问题)
6.TCP的11中状态转换图默写,
7.还了解哪些模式?状态机模式在单核服务器高效[设计模式在面试中基本会问:享元模式,迭代器模式,适配器模式等等
8.守护进程介绍
9.僵尸进程问题解决
10.指针和引用的区别
二面:
1.下面这段代码出现的问题
class A
{
public :
A(A &a)
{
print();
}
public:
virtual void print()
{
cout<<“A::”<<m_a<<endl;
}
static void fun(A *a)
{
cout<a->p_a<<endl;
}
public:
int m_a;
};
class B:public A
{
public:
virtual void print()
{
cout<<“B::”<<m_b<<endl;
}
public:
int m_b;
};
void printall(A *a,int count)
{
for(int i=0;i<count;i++)
{
a[i]->print();
}
}
int main()
{
B *b = new B[10];
printall(b,10);
return 0;
}
2.二叉排序树从大到小排序:[1]递归[2]栈
struct Tree
{
Node *pLeft;
Node *pRight;
int value;
};
void sort_print(Tree *root)
{
}
3.堆排序的使用场景
快排使用场景
排序稳定性定义+计算,是否稳定
4.编写自动锁代码:RAII机制,对象管理资源,注意资源管理,拷贝构造和等号赋值要私有化
5.static函数和普通函数区别
三面:
1.未来计划
2.有什么问题?百度校招offer问题
3.我们主要是语音架构