Web服务器项目中常问的开放性问题

文章目录

  • 一、对后端开发的看法?
  • 二、为什么要做静态http服务器?
  • 三、为什么要使用ET模式?
  • 四、多线程编程的注意事项
    • 1、为什么要用多线程
    • 2、多线程编程的特点
    • 3、确保线程安全的几种方式
    • 4、与多线程有关的编程方法
  • 五、使用Linux系统有什么好处?
  • 六、对云计算的看法?
  • 七、服务器突然崩溃退出,怎么处理?
  • 八、服务器突然运行很慢怎么处理?
  • 九、线程池中只有几个线程能响应1万+的用户吗?

一、对后端开发的看法?

  提起后端,不免要说到前端,前端主要是负责与用户直接打交道,更多的是做一些交互,用户的请求一般是提交到后端进行处理,后端主要负责逻辑处理。C++后端开发首先是要对C++语言比较熟悉;还要熟悉网络编程,因为有时候需要处理高并发任务;现在的后台程序一般是运行在linux操作系统上,所以需要了解linux操作系统的基本知识、工具的使用、代码的编译等等。最后如果熟悉一门脚本语言,会更利于工作了。

二、为什么要做静态http服务器?

  了解基本网络服务器的开发过程,熟悉reactor模式、基本的网络编程方法、TCP/IP协议和HTTP协议、C++的语法、多线程以及Linux下的各种工具的使用。

三、为什么要使用ET模式?

  ET模式由于数据到来才会,所以相比LT模式减少了触发次数,避免了busy-loop,效率会比LT模式高很多,但是编程也变得更复杂了。

  由于采用ET模式,read、write和accept的时候必须采用循环的方式,直到error==EAGAIN为止,防止漏读等清况。

四、多线程编程的注意事项

1、为什么要用多线程

  多线程可以发挥多核CPU的优势(并行执行),达到充分利用CPU的目的因为多线程如果在单cpu中其实也是顺序执行的,只不过是系统帮我们切换执行顺序而已,其实并没有快

2、多线程编程的特点

  • 当前线程随时有可能被切换出去,或者说被抢占了,当我们使用公共资源的时候尤其要注意线程安全性,一般可以锁来保证线程安全

  • 多线程程序中事件的发生没有一个固定的顺序

3、确保线程安全的几种方式

  • 原子操作;

  • 同步与锁;

  • 使用可重入函数。

4、与多线程有关的编程方法

  掌握多线程的创建与销毁、锁机制和条件变量的使用

五、使用Linux系统有什么好处?

  • Linux系统是开源的,这意味着我们可以对Linux系统进行定制化开发;

  • Linux系统安全、稳定性强,很多服务端的程序都是跑在Linux系统上的。

六、对云计算的看法?

  • 云计算就是一种位于云端的计算模式,把零散的硬件资源进行重新分配,我们在使用自己电脑的时候内存和性能都是有限制的,那么我们就可以申请云端服务器资源;

  • 云计算可以认为包括以下几个层次的服务:基础设施即服务(IaaS)【硬件服务器租用】,平台即服务(PaaS)【软件的定制化应用】和软件即服务(SaaS【云服务器】)

Web服务器项目中常问的开放性问题_第1张图片

七、服务器突然崩溃退出,怎么处理?

  在Linux系统下使用CoreDump调试,如果程序有段错误会在当前目录下生成core文件(ulimit -c unlimited),然后使用gdb调试core文件(gdb a.out core),找到Segmentation fault这些信息

八、服务器突然运行很慢怎么处理?

  先查看后台服务器的运行状态,包括磁盘,CPU,内存的使用情况等(top,free)。如果是磁盘满了,做好备份,清理下磁盘;如果是CPU的问题,查找下占用率较高的进程,kill掉与系统应用无关的进程

  还有一种情况可能是close_wait或者time_wait状态过多了,消耗了服务器的资源,使用netstat命令查看下网络连接的状态。

九、线程池中只有几个线程能响应1万+的用户吗?

  可以,一个连接到来由线程池中某个线程去处理,处理完毕后回到线程池继续接收连接,如果响应很慢可以加大线程池中线程的数量

你可能感兴趣的:(项目中的问题)