腾讯视频搜索部门 — 一面(两个小时)
远程写代码
二分查找和二叉树两个结点的最低公共子结点
介绍项目
大端模式和小端模式
0x12345678
地址:0x00 0x01 0x02 0x03
大端:0x78 0x56 0x34 0x12
小端:0x12 0x34 0x56 0x78
大端就是数据的高位保存在内存的低位,即倒序
小端就是数据的低位保存在内存的低位,即正序
HTTP协议Keep-Alive模式
HTTP协议采用“请求-应答”模式,当使用普通模式,即非KeepAlive模式时,每个请求/应答客户和服务器都要新建一个连接,完成 之后立即断开连接(HTTP协议为无连接的协议);当使用Keep-Alive模式(又称持久连接、连接重用)时,Keep-Alive功能使客户端到服 务器端的连接持续有效,当出现对服务器的后继请求时,Keep-Alive功能避免了建立或者重新建立连接。
Keep-Alive模式如何判断数据已接受完成
Keep-Alive模式发送玩数据HTTP服务器不会自动断开连接,所有不能再使用返回EOF(-1)来判断
1. 使用消息首部字段Conent-Length
服务器是预先知道内容大小,用Conent-Length
2. 使用消息首部字段Transfer-Encoding
- 服务器是不可能预先知道内容大小,这时就可以使用Transfer-Encoding:chunk模式来传输 数据
- 一边产生数据,一边发给客户端,服务器就需要使用Transfer-Encoding: chunked
浏览器是做什么的
用来解析网页,解析HTML文件的
哪些情况会导致Linux系统变慢,如何查看
- CPU:top
- 内存:free
- 硬盘:iotop
用户态和内核态的区别
查看进程和端口号占用情况
查看进程:ps | grep ***
查看进程和端口号使用情况:netstat -apn
进程通信的方式
- 管道( pipe ):管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用。进程的亲缘关系通常是指父子进程关系。
- 有名管道 (named pipe) : 有名管道也是半双工的通信方式,但是它允许无亲缘关系进程间的通信。
- 信号量( semophore ) : 信号量是一个计数器,可以用来控制多个进程对共享资源的访问。它常作为一种锁机制,防止某进程正在访问共享资源时,其他进程也访问该资源。因此,主要作为进程间以及同一进程内不同线程之间的同步手段。
- 消息队列( message queue ) : 消息队列是由消息的链表,存放在内核中并由消息队列标识符标识。消息队列克服了信号传递信息少、管道只能承载无格式字节流以及缓冲区大小受限等缺点。
- 信号 ( sinal ) : 信号是一种比较复杂的通信方式,用于通知接收进程某个事件已经发生。
- 共享内存( shared memory ) :共享内存就是映射一段能被其他进程所访问的内存,这段共享内存由一个进程创建,但多个进程都可以访问。共享内存是最快的 IPC 方式,它是针对其他进程间通信方式运行效率低而专门设计的。它往往与其他通信机制,如信号两,配合使用,来实现进程间的同步和通信。
- 套接字( socket ) : 套解口也是一种进程间通信机制,与其他通信机制不同的是,它可用于不同及其间的进程通信。
在浏览器中输入网址按回车后发生了什么
连接 当我们输入这样一个请求时,首先要建立一个socket连接,因为socket是通过ip和端口建立的,所以之前还有一个DNS解析过程,把URL解析为ip,如果url里不包含端口号,则会使用该协议的默认端口号。
DNS的过程是这样的:首先我们知道我们本地的机器上在配置网络时都会填写DNS,这样本机就会把这个url发给这个配置的DNS服务器,如果能够找到相应的url则返回其ip,否则该DNS将继续将该解析请求发送给上级DNS,整个DNS可以看做是一个树状结构,该请求将一直发送到根直到得到结果。
请求 连接成功建立后,开始向web服务器发送请求,这个请求一般是GET或POST
- 应答 web服务器收到这个请求,进行处理。从它的文档空间中搜索子目录mydir的文件index.html。如果找到该文件,Web服务器把该文件内容传送给相应的Web浏览器。为了告知浏览器,,Web服务器首先传送一些HTTP头信息,然后传送具体内容(即HTTP体信息),HTTP头信息和HTTP体信息之间用一个空行分开。
- 关闭连接 当应答结束后,Web浏览器与Web服务器必须断开,以保证其它Web浏览器能够与Web服务器建立连接。
301,302的区别;500指什么
3** 重定向
搜索推荐是用什么实现的
Trie树结构
TCP/UDP的区别
HTTP使用TCP还是UDP
TCP三次握手
对于抓取网页中js代码怎么处理,静态页面又怎么处理
sellect和epoll的区别
5亿搜索词中,找到出现次数最多的top100
5亿搜索词
一个搜索10个字,20个字节
5亿 * 20字节 = 100亿字节 = 10,000,000,000B = 10G
可以一次放入内存,则先用hash统计词频,再用取出大跟堆