vlambda博客
学习文章列表

XX网c++程序员面试题目

1. 逆序打印链表,不借助其他工具。

void PrintListReverse(ListNode *head){ if(head != nullptr) { if(head->next != nullptr) { PrintListReverse(head->next); } printf("%d \n",head->value); }}

2. Linux系统中cp和mv的区别。

cp: 将文件或者目录拷贝到另一个目录中。

mv: 将文件或者目录转移到另一个目录中。

从inode角度分析:

cp:只会复制数据不会复制inode索引节点上的文件元信息。

mv: 会将存储于inode索引节点上的文件元信息也转移到新文件中。

3. Linux系统中系统监控的相关命令大全。

内存:free:查看内存,包括物理内存和虚拟内存。

   vmstat:对操作系统的虚拟内存、进程、CPU活动进行监控。

CPU:top:各个进程对资源的占用情况。

  mpstat命令指令主要用于多CPU环境下,它显示各个可用CPU的状态。

网络:netstat:网络连接状态。

   tcpdump:捕捉或过滤TCP/IP包。

   iostat:手机设备的IO信息。

4. 为什么C++的析构函数设置成虚函数。

 在实现多态时,当用基类操作派生类,在析构时防止只析构基类而不析构派生类的状况发生,这样会引发内存的泄漏。但是当不存在继承和派生时,可以设置非虚函数。默认不是虚析构函数是因为如果析构函数为虚函数就需要编译器在类中增加虚函数表来实现虚函数机制,这样所需内存空间就更大了,因此没有必要默认为虚析构函数。

5. Linux中多线程编程的API有哪些。

线程相关:pthread_create(),创建一个线程;pthread_exit(),线程结束时调用;pthread_join(),一个进程中的多有线程都可以调用pthread_join函数来回收其他线程,等待其他线程结束;pthread_cancle(),异常终止一个线程。另外多线程编程涉及到线程的数据交换和同步,需要互斥锁、条件变量、读写锁、信号量等来进行同步。

6. 介绍一下Linux系统中的自旋锁。

自旋锁是Linux系统用来保护临界区资源的,在Linux系统中比较常见。自旋锁最多只能被一个可执行的线程持有,而一个试图获得自旋锁的线程则需要一直循环等待,这就是自旋的意思,从而可以看出,线程自旋时比较浪费处理器时间。

7. 非阻塞IO什么情况下可读可写。

对于非阻塞IO,操作成功与否都会返回,通过返回的错误码来判断是否可读可写。读,没有数据时立刻返回,有数据时采用有多少读多少。写,就是有多少写多少。能够写多少是根据本地网络拥塞情况为标准的,当网络拥塞严重的时候,网络层没有足够的内存来进行写操作,就会出现写不完的情况;这时候,阻塞写除非被中断,都会等到数据都写完;而非阻塞写,就是能写多少算多少。

8. 多客户端连接造成访问性能下降怎么排查。

此题理解上应该是大量并发造成的服务器性能下降该如何排查应对:(1)内存,查看系统内存情况,包括物理内存和虚拟内存,Linux系统命令free -m可以快速查看Linux的内存情况。(2)cpu:查看cpu是否一直运行在高负载的情况。(3)查看数据库是否存在访问瓶颈。(4)查看客户端和服务器之间是否存在大量的空连接,防止出现连接耗尽攻击,因为系统需要为每一个连接维护状态,就需要占用大量的资源。

9. 进程之间是怎么同步的。

进程同步也是进程之间直接的制约关系,是为完成某种任务而建立的两个或多个线程:临界区(Critical Section):通过对多线程的串行化来访问公共资源或一段代码,速度快,适合控制数据访问;互斥量为协调共同对一个共享资源的单独访问而设计的。互斥量跟临界区很相似,比临界区复杂,互斥对象只有一个,只有拥有互斥对象的线程才具有访问资源的权限;信号量,它允许多个线程在同一时刻访问同一资源,但是需要限制在同一时刻访问此资源的最大线程数目,互斥量是信号量的一种特殊情况,当信号量的最大资源数=1就是互斥量了;事件用来通知线程有一些事件已发生,从而启动后继任务的开始。

10. 建立TCP连接消耗哪些资源。

参考链接:

1.https://blog.csdn.net/hhhanpan/article/details/80624244。

2.https://blog.csdn.net/m0_38001814/article/details/90546111。

3.https://blog.csdn.net/qq_34777600/article/details/81948586。

4.https://blog.csdn.net/qj4522/article/details/84892762。

5.https://blog.csdn.net/zxx901221/article/details/83006453。