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

一、对后端开发的看法?

  提起后端,不免要说到前端,前端主要是负责与用户直接打交道,更多的是做一些交互,用户的请求一般是提交到后端进行处理,后端主要负责逻辑处理。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【云服务器】)

在这里插入图片描述

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

  在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万+的用户吗?

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

  • 2
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

~青萍之末~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值