总结这个面试题并不是鼓励大家去跳槽,每家公司都有他好的一面,也都会存在一定问题,不要以为别人家的公司什么都是好的。因此跳槽之前,先想清楚为什么要跳槽。切不可盲目跟风,但是一旦做出了换工作的决定,那么就会面临着频繁的面试。
对于程序员来说,面试主要关注点还是你的技术能力。下面结合自己的面试经历总结下对于服务器后台开发岗位,面试官主要考察的是哪些知识点。有些知识点公众号前面的文章已经涉及到,将其链接放在题目下,直接点击即可跳转到相关文章,供大家参考,对于公众号没有涉及到的知识点,本文暂时不做解答,后面将会以文章形式持续推出。
每个公司每个面试官的风格不一样,因此想将所有的面试题都总结不可能,下面总结的是面试中出现频率较高的面试题。
数据结构与算法
1:你最熟悉的一种排序算法,其复杂度是多少,并实现它?
通俗易懂讲解 快速排序
通俗易懂讲解 选择排序
通俗易懂讲解 位排序
算法分析神器—时间复杂度
2:hash表的原理,时间复杂度,哈希冲突怎么解决?
神速Hash(上)
神速Hash(下)
3:手写二叉树的三种遍历,如果你以递归的方式写出来了,可能会继续让你以非递归的方式实现。
通俗易懂讲解 二叉树遍历
4:输入两个整数n和sum,从数列1,2,3.......n 中随意取几个数,使其和等于sum,要求将其中所有的可能组合列出来。
5:单链表逆转
6:合并两个有序链表
7:字符串转化为整数,考察点主要是你编码的严谨性。
8:最大连续子数组和
9:最长回文字串
10:数组中有一个数字出现的次数超过了数组长度的一半,找出这个数字。
11:100亿个数,求最大的1万个数,并说出算法的时间复杂度。
注:算法的考察很灵活,但是如果面过很多公司,你就会发现,一般都能在leetcode和剑指offer能找到对应的题,因此找工作的同学可以抽点时间刷刷leetcode,将容易和中等的刷了差不多就能应付80%的算法面试了。
系统编程
1:Linux下进程虚拟空间布局。
Linux内存管理
2:进程间通信方式有哪些,它们都适合用于哪些场景,你在项目总用过哪几种?
3:线程同步的方式有哪些?
4:互斥锁和读写锁以及信号量
5:malloc函数的实现原理
6:什么是死锁?如何避免死锁?
7:动态链接和静态链接的区别?
Linux下C++静态库和动态库详解
8:进程和线程区别,多线程编程需要注意什么?
进程与线程的一个简单解释
9:select和epoll的区别,epoll两种模式(ET和LT)的区别。
C/C++语言
1:字节对齐相关题目。
C/C++内存对齐详解
2:static关键字的作用。
类的静态成员
3:C++中智能指针的实现原理,shared_ptr和unique_ptr有什么区别?
C++智能指针
4:C++中虚函数的作用,实现原理?
5:指针和引用的区别,什么时候必须用引用?
6:const和define区别
7:stl有哪些容器,它们的特点是什么,适合用于什么场景?
8:当vector的内存用完了,它是如何扩展内存的?
9:map是怎么实现的?查找复杂度是多少?能不能边遍历边插入?
10:vector每次insert或erase之后,以前保存的iterator会不会失效?
TCP/IP协议
1:TCP和UDP协议的区别。
不放弃 (TCP协议与流通信)
傀儡 (UDP协议)
2:说说对TCP滑动窗口的理解。
魔鬼细节 (TCP滑窗管理)
3:tcp三次握手四次挥手的过程,为什么要进行三次握手,四次挥手?
爱的传声筒 (TCP连接)
4:time_wait状态产生的原因、危害以及如何避免?
Linux系统工具
1:用过的linux命令有哪些?
2:top/fee/vmstat/iotop/iostat/netstat等系统监控命令的使用,包括命令输出某些关键字段的含义。
Linux中load average意义
Linux下查看CPU信息[/proc/cpuinfo]
3:gdb调试相关问题,如怎么调试coredump文件?
4:makefile相关问题
5:awk/sed/grep结合正则表达式的问题。
让你事半功倍的正则表达式
grep命令基本用法
系统结构设计
1:如何设计一个分布式ID生成器
分布式ID生成器
2:系统容错性设计
亿级Web 系统的容错性实践【上】
亿级Web 系统的容错性实践【中】
亿级Web 系统的容错性实践【下】
3:高并发系统设计从哪些方面考虑
以上就是是面试服务器后台开发岗位中出现频率较高的知识点(三年及以下经验,至于资深、架构师这些职位面试主要问些什么,我也不太清楚),主要针对的是C++技术栈,至于JAVA/PYTHON等其它语言,其实也有一定的借鉴,如算法、协议、系统设计等这些都是共通的。
服务器后台开发还是有很多的东西要学,上面的总结只是让大家在面试中做到心中有数,实际开发中要掌握的东西远远不只这些,需要大家在平时的学习过程中慢慢积累。后续将会整理服务器后台开发中一些经典书籍和开源代码供大家参考阅读。