面试题演练

百度一面:

1、实验室项目里面使用什么建模的

2、进程和线程具体的区别

通俗说法:

一个进程可以包括很多线程

同一个进程下的线程共享全局变量、静态变量

《面试题演练》

  • 进程是资源分配的最小单位,线程是程序执行的最小单位。

  • 进程有自己的独立地址空间,每启动一个进程,系统就会为它分配地址空间,建立数据表来维护代码段、堆栈段和数据段,这种操作非常昂贵。而线程是共享进程中的数据的,使用相同的地址空间,因此CPU切换一个线程的花费远比进程要小很多,同时创建一个线程的开销也比进程要小很多。

  • 线程之间的通信更方便,同一进程下的线程共享全局变量、静态变量等数据,而进程之间的通信需要以通信的方式(IPC)进行。不过如何处理好同步与互斥是编写多线程程序的难点。

  • 但是多进程程序更健壮,多线程程序只要有一个线程死掉,整个进程也死掉了,而一个进程死掉并不会对另外一个进程造成影响,因为进程有自己独立的地址空间。

 

3、协程

《面试题演练》

Python语言中有协程

4、ngnix高性能服务器,为啥高性能

简单介绍ngnix

Nginx是一个流行的高性能服务器,官方宣称在压力测试下可以支持5万个并发连接,而且占用内存极低。相比于其他昂贵的硬件负载均衡解决方案,Nginx是开源免费的,可以大大降低成本。本文将从一下几个方面来剖析其内部结构。

  1. 特点
  2. 进程模型

    1. 惊羣效应
    2. 负载均衡
  3. 核心模块

    1. 模块分类
    2. 事件驱动模块机制
    3. 反向代理模块
  4. 配置文件

Nginx的特点

Nginx是俄罗斯工程师开发的高性能Web服务器,为了实现高效Nginx全部采用C语言编写,因为底层对不同的操作系统进行了封装,所以Nginx实现了平台无关性。 众所周知,Nginx性能高,而高性能与其架构是分不开的。Nginx采用多工作进程的方式处理连接请求,并且利用Cpu和进程的亲缘性将进程和特定Cpu绑定,在实现并发的同时避免了进程上下文切换的开销。同时,所有的Io操作,不管是网络Io还是磁盘Io,Nginx统一采用Linux内核的Epoll机制配合回调函数实现异步。这使得Nginx可以轻轻松松实现万级别的并发,相比其他主流Web服务器,如Apache的千级别的并发有很大的进步。除了上述两大特点外,Nginx内部处处可见大量的细节优化也是Nginx高效的基石。

5、输入一个URL,如何显示页面的过程

  • 1、输入网址
  • 2、DNS解析
  • 3、建立tcp连接
  • 4、客户端发送HTPP请求
  • 5、服务器处理请求 
  • 6、服务器响应请求
  • 7、浏览器展示HTML
  • 8、浏览器发送请求获取其他在HTML中的资源。

基本答出DNS 域名解析,TCP协议,HTTP协议

6、TCP三次握手

客户端发送链接请求给服务器,服务器确认连接请求,客户端再回一个收到确认。连接建立。

7、为什么需要三次握手

防止已过期的请求再发给服务器。

8、Time_wait

《面试题演练》

四次挥手,结束连接的过程中,收到服务器第三次挥手的报文等待2MSL再关闭客户端,是为了让最后一次确认报文顺利传到服务器。

9、什么是TCP粘包

TCP粘包是指发送方发送的若干包数据到接收方接收时粘成一包,从接收缓冲区看,后一包数据的头紧接着前一包数据的尾。

10、网络模型分几个层次

OSI 七层参考模型

11、TCP,UDP的区别

TCP面向连接可靠,UDP不用面向连接,不可靠。

  • TCP面向连接(三次握手),通信前需要先建立连接;UDP面向无连接,通信前不需要连接。
  • TCP通过序号、重传、流量控制、拥塞控制实现可靠传输;UDP不保障可靠传输,尽最大努力交付。
  • TCP面向字节流传输,因此可以被分割并在接收端重组;UDP面向数据报传输。

 

12、流量控制和拥塞控制的区别

流控理解为 端到端的控制

拥塞控制是A与B之间的通信子网(通信子网是下3层的事)发生数据拥堵,来不及传输,这个牵涉的是网络节点的事。

13、TCP出现在传输层,IP在网络层

14、什么是平衡二叉树

左子数的深度和右子树的深度不超过1

15、快速排序和堆排序,什么是稳定和不稳定

快速排序分治

堆排序基于堆的思想

快速排序不稳定。

稳定就是原来再前的数,排序后还再前。

16、单链表如何判断有环?环的位置在哪?

快慢指针,剑指offer题目。

17、你来实习能实习多久?

18、部门做啥的,DuerOS,人工智能操作系统,度祕事业部。

 

百度二面:

1、TCP协议和IP协议有什么关系

TCP协议再IP协议之上。

2、TCP是如何保证可靠传输的

确认和重传:接收方收到报文就会确认,发送方发送一段时间后没有收到确认就重传。

数据校验

数据合理分片和排序:

3、是如何确认的

滑动窗口机制

《面试题演练》

4、发送端是如何确认需要重传哪些包的

 

5、TCP和HTTP的关系,HTTP还可以基于什么传输

HTTP在TCP之上,

6、HTTP和HTTPS的关系

HTTPS的全称是Secure Hypertext Transfer Protocol(安全超文本传输协议),是在http协议基础上增加了使用SSL加密传送信息的协议。

7、加密算法有哪些,如何理解MD5

 

8、Linux如何创建空文件,创建目录指令,find如何查找用户名为work的文件,(答的不好)

mkdir, find

GDB的题目也经常考

9、如何调试的,GDB调试,

10、GDB如何打印当前进程的堆栈-(gdb) bt

11、如何将当前客户端的内容发送给其他客户端,如何实现的。

进程间通信吗?

12、同时发消息,是以什么顺序发送给其他人的

13、同时有一万人,同时说一句话,服务器没法处理的,该怎么办

14、短连接和长连接,聊天室是采取哪种连接方式。

短链接连一次就断开,长连接就是一直连着,不断开。

15、那你的聊天室采用短连接,连接的客户端又断开了,那你怎么发送数据给其他客户端的。

16、实验室项目介绍。

17、你有什么问题问我。

 

 

1、介绍一下web服务器的架构和实现(语速慢点)

2、智能指针(等面试官说完话在回答)

C++11 中4种智能指针,较难

3、http里面列举几个消息头,最常用的消息头。

GET

向Web服务器请求一个文件

POST

向Web服务器发送数据让Web服务器进行处理

PUT

向Web服务器发送数据并存储在Web服务器内部

HEAD

检查一个对象是否存在

DELETE

从Web服务器上删除一个文件

CONNECT

对通道提供支持

TRACE

跟踪到服务器的路径

OPTIONS

查询Web服务器的性能

4、为什么不使用多进程形式?

5、nginx

Nginx (engine x) 是一个高性能的HTTP反向代理web服务器

6、get文件返回和二进制文件返回有什么区别

7、主进程和工作线程中,epoll对套接字的复用是如何做的。

解释epoll函数

8、线程的套接字和主进程的套接字是如何作用的

9、华为挑战赛讲一下,做了多久。

10、实验室项目,技术层面上讲

11、做题目多线程归并排序

比较难

 

1、UTF8和GD2312的区别

2、一个汉字在GD2312中是几个字节表示的

前面两道题目为编码的问题

3、Linux进程栈和堆的空间如何分配和释放的

C/C++ 编程语言种堆空间需要手动释放,栈空间自动释放

4、进程栈和线程栈的区别

5、线程栈是在哪里分配的

6、TCP是如何处理粘包的问题

7、malloc的内存分配方式

 

8、二叉树找公共祖先,只有root节点和两个节点指针。

剑指offer

9、无序的整数数组,使得奇数在前面,所有的偶数都在后面。

快排。

点赞