阿里云基础面试

感谢黄神提供修改意见。

1. c语言为什么还这么流行?c语言的应用场景在哪里?

附上链接: https://www.tomorrow.wiki/archives/1893 ,这篇文章真心不错。

首先,c语言的快是无法比拟的优势(但是个人觉得好用的话,还是java比较好用)。因此,C语言在快反应的需求上有很大的优势。并且,linux等有大量的c代码库,它们是基本无法重写的(代价太高昂)。应用场景:高实时系统、微机和嵌入式系统。

易用且安全,与,高速,是比较难调和的两端。


2. c语言的宏定义需要注意什么?

这个比较简单,以后再说。


3. 内核态和用户态的区别是什么?是否进行过内核态的开发?

3.1 内核的概念

如图,内核是狭义的操作系统,负责管理硬件资源,并为上层用户提供访问的接口——系统调用。

   

3.2 内核态和用户态

由于内核资源有限,所以linux设置了相应的权限来限制对内核资源的访问,相应的权限对应了两种状态——用户态和内核态,用户态能够访问的资源要收到很大的限制。

3.3 用户态和内核态的切换

     (1) 用户态通过系统调用如sbrk,read等进入系统调用。

     (2) 对异常的处理,会陷入内核态。

     (3) 对中断的处理,也会陷入内核态。


4. 如果linux变得很卡了,你该怎么办? 

首先, 使用 free -h 查看内存和交换区的使用情况。

第二步, 使用top查看资源使用情况,按M键按照内存排序, 按住P键,按照cpu使用情况排序。

当然, 还有更加高级的操作

ps -aux | sort -nk4r | head -10

ps -aux 输出所有进程。 sort -nk4r, -n是按照数值排序, -k4指的是选定第四列作为排序依据, -r指的是逆序。 head -10显示前10行。其中, 使用k4还是k5, k6, 可以先使用ps -aux, 看情况使用。 


5. linux如何查看网络端口情况

5.1 network status

使用netstat -natp, -n 是ip化,否则会显示域名信息, -a 是所有, -t是tcp链接(-u是udp链接), -p 显示进程pid。

这种方法的好处在于可以清楚地查看每一个建立起来的链接. 比如我打开一个sslocal, 本地的其他应用是否链接到了这个端口, 就可以用netstat 去查看. 从而排除其他应用没有连上sslocal的情况.

5.2 list open file -internet

lsof -i tcp:<端口号> 或者 lsof -i  :<端口号> 查看端口号对应的链接. lsof是list open file的意思,-i是internet查看网络情况。举例:lsof -i tcp:18080或者lsof -i :18080,记住冒号始终要带上。

5.3 补充

可以通过kill -9 pid关闭链接(比较粗暴).但是这种做法会带来很严重的后果,就是服务端请求关闭连接,而客户端进程由于直接被杀死,一直没有相应。而客户端在原来的连接没有关闭的情况下是无法建立新的连接的,因此会出现一时半会连不上的现象。综上,还是换种方法正常关掉tcp连接比较好。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值