互联网公司后台岗位面试经

  金三银四季,人心躁动,或为寻求新生,或为追逐非凡。作为一个技术从业者,往往容易把自己局限在某一狭小的圈子,你很认真的做一些事情,也的确从中得到了一些收获,但是,倘若你敢于突破圈子,去接触了解外面的世界,你或许会遭受“冲击”,得到意想不到的收获。从2000年前的pc时代,到互联网,移动互联网,再到如今的云计算、人工智能、大数据乃至区块链,你不难发现,技术的演进已经变得愈发快速,未来的世界将会怎样,真是难以预测!但可以预知的是,未来的5-10年,云计算将做为类似电信运营商这样的基础设施,带动传统行业更新升级以及包括人工智能、大数据、区块链这样的技术的发展。而我们需要做的是,打破传统的束缚,时刻关注技术趋势和行业动态,适时合理做出自己的判断和选择。这个世界,已经不是单纯靠努力就能过得体面的时代了,也已经不是一件事情可以做一辈子的时代了,我想表达的就是选择比努力可能更重要,至于怎么选择,就需要你保持与时俱进的态度,有足够系统的认知和判断力。

  下面总结分享下最近面试互联网公司的一些题目,主要针对后台c/c++开发方向:

首先先做下分类,主要可以分为linux基础、网络知识、语言基础、数据库、宏观认识几个部分,下面逐一列出,希望对求职者有帮助:

一、linux基础

1、linux进程间通信方式有哪些?各有什么特点?

2、linxu线程同步方式有哪些?

3、进程与线程有何区别?

4、fork一个进程,子进程会继承父进程哪些东西?

5、如何查看进程打开了哪些文件?如何查看进程使用了哪些共享内存?

6、gdb如何调试一个正在运行的程序?gdb命令有哪些?

7、gdb实现原理是怎样的?

8、gdb调试一个core文件,bt发现堆栈信息都是????,可能是什么原因导致?应该怎么排查?

9、一个程序启动运行的过程是怎样的?

10、编译一个程序,都经过了哪些环节?

11、一个程序在内存中的占用空间分布是怎样的?

12、共享内存内核是怎么实现的?

13、怎么查看一个程序链接了哪些动态库?怎么查看一个动态库包含哪些符号?怎么看是否未定义?

14、磁盘有哪些调度算法?

15、一个程序存在性能问题,如何定位它?

16、iostat 工具展示信息中util对应值含义是什么?

17、如何评判一个磁盘的好坏?

18、一般什么时候会使用到tcpdump,怎么使用?

19、epoll与select有什么区别?epoll有哪些触发模式?什么场景会使用ET模式?

20、epoll在内核是怎么实现的,使用了什么数据结构?

21、什么是零拷贝?

22、mqtt协议有哪几种发布服务质量?

二、网络知识

1、tcp三次握手四次挥手过程是怎样,请画出来

2、tcp断开连接时为什么要有time_wait状态?

3、tcp与udp有何区别?

4、tcp/ip内核协议栈有了解吗?

5、tcp协议如何保证数据可靠传输?

6、写出建立一个tcp连接进行数据交互时,客户端、服务端分别都调用了哪些接口?

7、如果tcp服务端只listen不accept,三次握手能成功吗?

8、tcp有个问题叫“黏包”,有了解吗?

9、recv函数返回0,-1,大于0分别代表什么?

10、tcp滑动窗口和拥塞控制了解吗?

11、libuv内部大概是怎么实现的?利用了什么机制实现异步?

12、有了解哪些服务器并发处理模型?什么是leader-follow模型?

13、怎么保证一个发送数据可靠到达对端?

14、如果一个报文发出去了,对端接收不到,要怎么去定位排查?

15、如果一个服务端目前支持n个并发连接,如果只从服务端程序优化角度去提高支持并发数,有什么思路?

16、nginx和apache的区别是怎样的?nginx怎么处理惊群效应?nginx负载均衡有哪几种方式?nginx源码有哪几个模块?

17、如何通过tcp去传输文件?如何实现断点续传?

18、如果服务器宕机或进程挂掉了,客户端连接会怎样?

19、已经建立好的tcp连接,怎么去检测它是否存在异常?如果客户端发现异常将连接断开后,怎么触发重新建立连接?

20、访问www.baidu.com,都经过了哪些过程?

21、什么是泛域名?

三、语言基础

1、实现一个mem_cpy函数

2、用c写出快速排序算法

3、写一个函数判断机器是大端还是小端

4、volatile关键字作用是什么

5、一个带static函数有什么特点

6、extern C是什么意思

7、printf是怎么支持变参输入的?printf("%d")会输出什么

8、指针运算、内存对齐、联合体

9、c和c++各有什么特点

10、什么是多态、重载函数?

11、虚函数如何实现?

12、给一个类结构,写出其构造函数、析构函数、拷贝构造函数

13、go语言有什么特点?协程是怎么实现的?相比较线程有什么优点?

14、python、lua、shell、php等熟悉吗

四、数据库

1、sqlite、mysql、mongodb、redis、memcache各有什么特点?

2、数据库优化手段有哪些?

3、分析一个sql查询语句会经过哪些步骤?

4、数据库引擎至上而下大概是什么样的?

5、数据库如何保障ACID

6、mysql和redis都有缓存,分别都是维护什么样的结构?

7、设计微信朋友圈对应的数据库表结构

8、数据库索引怎么实现,锁特点

五、宏观认识

1、什么是云计算?

2、云计算分为哪几个部分?paas是什么、saas又是什么,举一个实际的例子

3、谈谈你对docker的认识?

4、什么是区块链?

5、如果让你来设计一款用户量很大的应用,你会怎么设计框架?

6、未来三年,你的规划是怎样的,或者最想要的是什么?

7、为什么想跳槽?

8、转型互联网,你怎么看待这个选择?

9、如何保障一个金融系统的可靠性?

10、分布式系统了解多少?什么是微服务?

以上大体包含了最近面试遇到的一些问题,还有一些忘记了的以及不好描述的(比如算法、逻辑题),仅供参考,希望对大家有帮助!

原文地址:https://www.cnblogs.com/chaser24/p/6752469.html