面试总结 | Linux后台开发不得不看的知识点(给进军bat的你!)

文章目录
一 自我介绍
二 面试情况
三 相关知识点汇总
1 c/c++相关
2 计算机网络
3 数据结构相关
4 数据库相关
5 操作系统
6 Linux基础知识及应用编程(后台必备!)
7 大数问题
8 手撕算法(递归非递归)
9 针对项目相关
10 场景题
11 架构/分布式/中间件相关
12 总结
白嫖不好,要不先赞在看!本文收录于面试集锦

一 自我介绍
本人小硕,秋招期间参加了不少安全类相关公司(深信服,绿盟等),另外参加了京东,小米,滴滴等互联网公司面试,同时也面试了几个研究所和一个银行,下面总结下秋招相关情况。

二 面试情况
公司名称 面试岗位 面试情况
小米 Linux内核开发 三面!挂
深信服 c/c++开发 四面 拿到offer
bigo c/c++开发 四面 拿到口头offer
滴滴 网络研发工程师 三面 挂场景
人大金仓 c语言开发工程师 三面 拿offer
京东 c++研发工程师 二面!挂
绿盟科技 防火墙开发工程师 没有去参加二面
浦发 软件开发工程师 拿到offer
中国网安(30所) c防火墙开发 拿到offer
映客直播 后台开发工程师(go) 二面挂(印象很深刻)
鼎桥(网上怎么变成了华为鼎桥。。) c/c++软件开发 拿到offer
这是小蓝整理的Linux后台开发面试高频题目(除了语言部分,其他部分差别应该不大),并提供相关知识的书籍或视频资源。

三 相关知识点汇总
1 c/c++相关
c++虚函数原理
智能指针
c语言如何实现c++对象以及私有成员
c++多态实现
new和malloc的区别以及底层实现原理
STL中的vector怎么扩容
虚函数指针的初始化过程
c++11原子变量介绍
c++11特性有哪些,说用过的
怎么理解重载与重写
怎么理解c++中的static关键字
vector和list 的区别
c++的内存分配
map与set的底层实现
类静态变量的初始化
析构函数可以是虚函数?为什么
深拷贝与浅拷贝
指针常量,常量指针的区别
c语言语法推荐书籍: 《c专家编程》《c与指针》

c++语言语言推荐书籍:《c++ primer》《effect c++》

c++语言stl底层原理:《STL源码剖析》

2 计算机网络
介绍下proactor和reactor
reactor的组成
TIME_WAIT危害
TIME_WAIT时长,为什么?
IP为什么要分片
项目中说用到线程池,开多大,为什么运用线程池?
select和epoll区别
select什么情况返回0
epoll可读情况有哪些
什么时候需要TCP四次挥手?
如何设置非阻塞
什么是零拷贝?
tcp与udp的区别以及应用场景
如何设计一个可靠的udp
粘包如何解决
讲一下拥塞控制和流量控制
http和https区别
是否了解中间人劫持原理
http协议格式,几种方法,功能是什么
chunk块了解?介绍下
有chunk的时候contentlength是什么样子
半连接在哪个阶段
三次握手四次握手详细过程,越详细越好
libevent结构,内部实现
tcp的可靠性体现在哪里
ARP协议工作流程
epoll中的ET和LT模式
介绍下滑动窗口
指针与引用的区别
Accept发生在三次握手哪个阶段
Udp的接收缓冲区和发送缓冲区和tcp的区别
http长连接与短连接的区别
udp包长度
一次url访问会经历哪些过程
数据包乱序会处理?
seq为1000,发送了1000个数据,下一个seq是多少?
syn如果丢了,重传多少次
tcp/ip相关推荐书籍:《tcp/详解:1》

熟悉使用wireshark捕包工具,加深印象可以使用python的一个库,scapy/dpkt.

3 数据结构相关
hash处理冲突的方法
二分查找及其变种
数组与链表的区别
redis数据结构用过哪些,了解跳表?
红黑树比平衡二叉树有哪些优点
二叉树,b+树,hash,二叉查找树区别
说说红黑树的特性
各种树,排序的时间复杂度
数据库索引,事务,事务级别
不考虑事务的隔离性会出现什么问题
事务隔离级别
索引的类型
AC自动机时间复杂度
数据结构书籍《大话数据结构》

极客时间王大佬/谭大佬专栏

4 数据库相关
如何提高查询速度?
加了索引就快了?
数据库索引底层结构
mysql与memcache的区别
mysql常见三种存储引擎的
MySQL B+Tree索引和Hash索引的区别?
B+树索引和哈希索引的明显区别是:
非关系型数据库和关系型数据库区别,优势比较?
mysql常见查询优化方案
mysql书籍推荐:《mysql必知必会》,《高性能Mysql》

5 操作系统
进程与线程的区别
多进程与多线程区别,应用场景
volatile和原子变量的区别
proc文件系统
自旋锁与普通锁的区别
虚拟内存
进程的内存分布
栈内存为什么由系统自动分配和释放
守护进程如何创建
进程间的通信方式及其区别,应用场景
死锁条件和解除
进程调度方式
对编译连接的理解
共享内存实现原理
僵尸进程是什么,如何处理
自旋锁在单cpu与多cpu下的使用
用户态与内核态
操作系统推荐书籍:《深入理解操作系统》,《Linux内核设计与实现》

6 Linux基础知识及应用编程(后台必备!)
如何查看进程打开的文件
介绍下nm与ldd命令
shell命令查内存,端口 ,io访问量,读写速率
awk grep具体应用
硬链接与软连接,目录可不可以用硬链接
常见命令netstat iptable tcpdump top
makefile介绍下(cmake介绍下)
gdb查看堆栈中所有遍历
gdb查看shared_ptr指向的内容
gdb如何调试多进程多线程
g++和gcc编译出来有什么区别
死锁怎么调试
core文件中是什么,gdb调试core文件
如何读取一个10G文件,cat一个10g文件会发生什么
Linux基础命令推荐书籍:《Linux就该这么学》

Linux应用编程推荐书籍《后台开发应用与实践》《Linux多线程服务端编程》

补充资料:gdb手册和makefile详解

7 大数问题
有200亿qq,但实际只有25亿用户,找到重复的qq
25亿qq占用内存多大
1-100万,计算找出所有的质数(计算密集型任务),用单线程与多线程怎么处理
1个G的文件写程序,从A机器发送到B机器,怎么发?
100G的文本,每行80k还是80字符,提示用多个机器,多进程,多线程,求出重复最多的行。一个机器内存8G,计算每个机器大概分多少?能读取100G的文本吗?找重复率前十的文本
三个有序的序列,查找公共的部分,第一次我说用哈希表,他说序列太大,空间复杂度要低点,我说了二分查找,他问三个序列查找的顺序和时间复杂度。(时间复杂度为N*logN *logN)
100WURL,如何存储
10台服务器,100w用户,如何进行负载均衡,如何有个服务器挂掉了咋办
10000个数据查找最小的100个?时间复杂度?
场景题:QQ的服务器会保存登录用户的QQ号,只要有登录,文件里面就会有记录,现在需要统计哪些QQ号登录过,怎么做?(先说了分治用小文件,他说除了这个了,我说bit数组,他就问需要多大内存?)
大数问题通常的套路是hash,分治,布隆,bitmap,如果推荐的话还是上面数据结构相关资料.当然如果能了解下比如hdfs文件系统,mapreduce,spark/flink流式计算最佳哈

8 手撕算法(递归非递归)
链表有无环判断
实现一个单例模式
给一个字符串判断单词数
开方算法
青蛙跳台阶
常用排序(快排和归并要写吐)
反转链表
两个链表,寻找公共节点
查找字符串中不重复的最长子串
LRU
手写求树的深度的代码
手写生产者消费者
编程实现string类
两个数组A,B,A有的B都有,求B-A;
输入一个字符串,输出它的全排列
统计完全二叉树多少个节点
memcpy实现
算法学习书籍推荐《剑指offer》,建议三遍哈。

leetcode分专栏练习几题,不在多,在于精。

9 针对项目相关
介绍一个你做的比较的项目,几个人做的,担任什么角色
项目的技术点在哪里
项目不足在哪里
你在项目中学到了什么
让你优化项目中的一点,如何做
项目什么架构https://www.szcbjs.com/
测过系统性能吗,挂掉怎么办?
最好是自己做过的项目,即时不是也需要弄明白其架构,为什么这么做,有什么优点,什么优化方案?

10 场景题
给一个场景,设计一下定时对url进行爬虫,比如对新浪1个小时爬虫n次,然后某些博客可能1个星期爬虫1次。
给一个场景,设计服务器实现爬虫的url去重,如何让多个服务器对一个url爬虫指定次数
好多小文件,设计一个服务器来实现如何存储
设计两地高效传文件
这部分

11 架构/分布式/中间件相关
常用负载均衡策略
一致性hash原理
缓存容灾中数据一致性问题
了解cap理论吗
介绍下高可用,高性能,可伸缩基本概念。。
了解微服务?docker?k8s?
Nginx了解到什么程度,nginx配置更新实现,事件模型
推荐书籍:《redis设计与实现》《从0开始学架构》《docker入门到实践》《大型网站技术架构-核心原理与案例分析》

12 总结
以上是技术面试中秋招常遇到的相关题目,希望对大家有帮助。所有资料,扫描下面二维码直接领取。

你可能感兴趣的:(面试总结 | Linux后台开发不得不看的知识点(给进军bat的你!))