互联网公司后台岗位面试经
金三银四季,人心躁动,或为寻求新生,或为追逐非凡。作为一个技术从业者,往往容易把自己局限在某一狭小的圈子,你很认真的做一些事情,也的确从中得到了一些收获,但是,倘若你敢于突破圈子,去接触了解外面的世界,你或许会遭受“冲击”,得到意想不到的收获。从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、分布式系统了解多少?什么是微服务?
以上大体包含了最近面试遇到的一些问题,还有一些忘记了的以及不好描述的(比如算法、逻辑题),仅供参考,希望对大家有帮助!