后台开发面试准备 | Linux后台开发该如何准备

From:https://mp.weixin.qq.com/s/joFBDntI9PmyVRiKPHwpRg
相关面试知识点汇总:
1、 c/c++相关
2、 计算机网络
3、 数据结构相关
4、 数据库相关
5、 操作系统
6、 Linux基础知识及应用编程(后台必备!)
7、 大数问题
8、 手撕算法(递归非递归)
9、 针对项目相关
10、 场景题
11、 架构/分布式/中间件相关

1、C/C++相关
(c语言语法推荐书籍: 《c专家编程》《c与指针》

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

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

c++虚函数原理

智能指针
https://juejin.im/post/5dcaa857e51d457f7675360b

c语言如何实现c++对象以及私有成员

c++多态实现

new和malloc的区别以及底层实现原理

STL中的vector怎么扩容
From:https://blog.csdn.net/zhuoya_/article/details/79660724

虚函数指针的初始化过程

c++11原子变量介绍

c++11特性有哪些,说用过的

怎么理解重载与重写

怎么理解c++中的static关键字

vector和list 的区别

c++的内存分配

map与set的底层实现

类静态变量的初始化

析构函数可以是虚函数?为什么

深拷贝与浅拷贝

文件创建快捷方式是浅拷贝 文件复制文件是深拷贝
浅拷贝的文件被删除快捷方式失效 深拷贝的源文件被删除,备份文件仍有。
浅拷贝实际上是对类成员的引用,深拷贝是对类成员的复制并且重新分配了内存。
From:https://blog.csdn.net/Osean_li/article/details/80213965
From:https://juejin.im/post/5b5dcf8351882519790c9a2e

指针常量,常量指针的区别
From:https://zhidao.baidu.com/question/349376199.html

2 、计算机网络
(tcp/ip相关推荐书籍:《tcp/详解:1》
熟悉使用wireshark捕包工具,加深印象可以使用python的一个库,scapy/dpkt.)

介绍下proactor和reactor

reactor的组成

TIME_WAIT危害

TIME_WAIT时长,为什么?

IP为什么要分片

项目中说用到线程池,开多大,为什么运用线程池?

select和epoll区别

select什么情况返回0

epoll可读情况有哪些

什么时候需要TCP四次挥手?

如何设置非阻塞

什么是零拷贝?

tcp与udp的区别以及应用场景

如何设计一个可靠的udp

粘包如何解决

讲一下拥塞控制和流量控制

http和https区别

是否了解中间人劫持原理

http协议格式,几种方法,功能是什么

chunked块了解?介绍下

有chunked的时候contentlength是什么样子

半连接在哪个阶段

三次握手四次握手详细过程,越详细越好

libevent结构,内部实现

tcp的可靠性体现在哪里

ARP协议工作流程

epoll中的ET和LT模式

介绍下滑动窗口

指针与引用的区别

Accept发生在三次握手哪个阶段

Udp的接收缓冲区和发送缓冲区和tcp的区别

http长连接与短连接的区别

udp包长度

一次url访问会经历哪些过程

数据包乱序会处理?

seq为1000,发送了1000个数据,下一个seq是多少?

syn如果丢了,重传多少次

3、数据结构相关
(数据结构书籍《大话数据结构》
极客时间王大佬/谭大佬专栏)

hash处理冲突的方法

二分查找及其变种

数组与链表的区别

redis数据结构用过哪些,了解跳表?

红黑树比平衡二叉树有哪些优点

二叉树,b+树,hash,二叉查找树区别

说说红黑树的特性

各种树,排序的时间复杂度

数据库索引,事务,事务级别

不考虑事务的隔离性会出现什么问题

事务隔离级别

索引的类型

AC自动机时间复杂度

4、数据库相关
(mysql书籍推荐:《mysql必知必会》,《高性能Mysql》,《mysql45讲》)

如何提高查询速度?

加了索引就快了?

数据库索引底层结构

mysql与memcache的区别

mysql常见三种存储引擎的

MySQL B+Tree索引和Hash索引的区别?

B+树索引和哈希索引的明显区别是:

非关系型数据库和关系型数据库区别,优势比较?

mysql常见查询优化方案

5、操作系统
(操作系统推荐书籍:《深入理解操作系统》,《Linux内核设计与实现》)

进程与线程的区别

多进程与多线程区别,应用场景

volatile和原子变量的区别

proc文件系统

自旋锁与普通锁的区别

虚拟内存

进程的内存分布

栈内存为什么由系统自动分配和释放

守护进程如何创建

进程间的通信方式及其区别,应用场景

死锁条件和解除

进程调度方式

对编译连接的理解

共享内存实现原理

僵尸进程是什么,如何处理

自旋锁在单cpu与多cpu下的使用

用户态与内核态

6、Linux基础知识及应用编程(后台必备!)
(Linux基础命令推荐书籍:《Linux就该这么学》
Linux应用编程推荐书籍:《后台开发核心技术与应用实践》《Linux多线程服务端编程》《高性能Linux服务器编程》 《linux环境编程:从应用到内核》《unix高级环境编程》
补充资料:gdb手册和makefile详解)

如何查看进程打开的文件

介绍下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文件会发生什么

7、大数问题
(大数问题通常的套路是hash,分治,布隆,bitmap,如果推荐的话还是上面数据结构相关资料.当然如果能了解下比如hdfs文件系统,mapreduce,spark/flink流式计算最佳哈)

有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数组,他就问需要多大内存?)

8、手撕算法(递归非递归)
(算法学习书籍推荐《剑指offer》,建议三遍哈。
leetcode分专栏练习几题,不在多,在于精。)

链表有无环判断

实现一个单例模式

给一个字符串判断单词数

开方算法

青蛙跳台阶

常用排序(快排和归并要写吐)

反转链表

两个链表,寻找公共节点

查找字符串中不重复的最长子串

LRU

手写求树的深度的代码

手写生产者消费者

编程实现string类

两个数组A,B,A有的B都有,求B-A;

输入一个字符串,输出它的全排列

统计完全二叉树多少个节点

memcpy实现

9、针对项目相关
(最好是自己做过的项目,即时不是也需要弄明白其架构,为什么这么做,有什么优点,什么优化方案?)

介绍一个你做的比较的项目,几个人做的,担任什么角色

项目的技术点在哪里

项目不足在哪里

你在项目中学到了什么

让你优化项目中的一点,如何做

项目什么架构

测过系统性能吗,挂掉怎么办?

10、场景题
给一个场景,设计一下定时对url进行爬虫,比如对新浪1个小时爬虫n次,然后某些博客可能1个星期爬虫1次。

给一个场景,设计服务器实现爬虫的url去重,如何让多个服务器对一个url爬虫指定次数

好多小文件,设计一个服务器来实现如何存储

设计两地高效传文件

11、架构/分布式/中间件相关
(推荐书籍:《redis设计与实现》《从0开始学架构》《docker入门到实践》《大型网站技术架构-核心原理与案例分析》)

常用负载均衡策略

一致性hash原理

缓存容灾中数据一致性问题

了解cap理论吗

介绍下高可用,高性能,可伸缩基本概念。

了解微服务?docker?k8s?

Nginx了解到什么程度,nginx配置更新实现,事件模型

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值