后端开发面试题:数据库、Redis、操作系统、算法、Linux

基础部分

  1. TCP报头格式
  2. UDP报头格式
  3. TCP/UDP区别(不仅是宏观上的,最好能根据各自的机制讲解清楚)
  4. HTTP状态码(最好结合使用场景,比如在缓存命中时使用哪个)
  5. HTTP协议(一些报头字段的作用,如cace-control、keep-alive)
  6. OSI协议、TCP/IP协议以及每层对应的协议。
  7. SESSION机制、cookie机制
  8. TCP三次握手、四次挥手(不只是每次请求的过程,各种FIN_WAIT、TIME_WAIT状态也要掌握)。
  9. 打开网页到页面显示之间的过程(涵盖了各个方面,DNS解析过程,Nginx请求转发、连接建立和保持过程、浏览器内容渲染过程,考虑的越详细越好)。
  10. http和https区别,https在请求时额外的过程,https是如何保证数据安全的
  11. IP地址子网划分
  12. POST和GET区别
  13. DNS解析过程

深入部分

14. TCP如何保证数据的可靠传输的(这个问题可以引申出很多子问题,拥塞控制慢开始、拥塞避免、快重传、滑动窗口协议、停止等待协议、超时重传机制)

15. 地址解析协议ARP

16. 交换机和路由器的区别

数据库基础部分

  1. 事务四大特性(ACID)
  2. 数据库隔离级别,每个级别会引发什么问题,mysql默认是哪个级别
  3. MYSQL的两种存储引擎区别(事务、锁级别等等),各自的适用场景
  4. 数据库的优化(从sql语句优化和索引两个部分回答)
  5. 索引有B+索引和hash索引,各自的区别
  6. B+索引数据结构,和B树的区别
  7. 索引的分类(主键索引、唯一索引),最左前缀原则,哪些情况索引会失效
  8. 聚集索引和非聚集索引区别。
  9. 有哪些锁(乐观锁悲观锁),select时怎么加排它锁
  10. 关系型数据库和非关系型数据库区别
  11. 了解nosql
  12. 数据库三范式,根据某个场景设计数据表(可以通过手绘ER图)
  13. 数据库的主从复制
  14. 使用explain优化sql和索引
  15. long_query怎么解决
  16. 内连接、外连接、交叉连接、笛卡儿积等

深入

  1. MVCC机制
  2. 根据具体场景,说明版本控制机制
  3. 死锁怎么解决
  4. varchar和char的使用场景。
  5. mysql并发情况下怎么解决(通过事务、隔离级别、锁)

Redis

  1. redis数据结构有哪些
  2. redis队列应用场景
  3. redis和Memcached(支持数据持久化)
  4. 分布式使用场景(储存session等)
  5. 发布/订阅使用场景

操作系统

  1. 内存的页面置换算法
  2. 进程调度算法
  3. 进程间通信方式
  4. 进程线程区别
  5. 进程之间的通信
  6. 父子进程、孤儿进程
  7. fork进程时的操作

算法基础

  1. 二叉树相关(层次遍历、求深度、求两个节点距离、翻转二叉树、前中后序遍历)
  2. 链表相关(插入节点、链表逆置、使用链表进行大数字的加减,双向链表实现队列、寻找链表中的环)
  3. 堆(大量数据中寻找最大N个数字几乎每次都会问,还有堆在插入时进行的调整)
  4. 排序(八大排序,各自的时间复杂度、排序算法的稳定性。快排几乎每次都问)
  5. 二分查找(一般会深入,如寻找数组总和为K的两个数字)
  6. 两个栈实现队列。
  7. 图(深度广度优先遍历、单源最短路径、最小生成树)
  8. 动态规划问题。

深入

  1. 红黑树性质
  2. 分治法和动态规划的区别
  3. 计算时间复杂度
  4. 二叉树和哈希表查找的时间复杂度

栈和链表是面试算法的时候经常用到的工具,多考虑怎么用数据结构的性质解决,因为面试不像笔试,对基础数据结构关注的比较多一些,一般问题也比较简单。然后取模也是常用的工具。

LINUX

  1. 硬链接和软连接区别
  2. kill用法,某个进程杀不掉的原因(进入内核态,忽略kill信号)
  3. linux用过的命令
  4. 系统管理命令(如查看内存使用、网络情况)
  5. 管道的使用
  6. grep的使用,一定要掌握,每次都会问在文件中查找
  7. shell脚本
  8. find命令
  9. awk使用

语言部分(PHP)

  1. 数组操作函数
  2. 字符串操作函数(数组和字符串的函数是最常问的,非常多,一定不要记混了)
  3. 指针和引用区别
  4. 堆和栈的区别
  5. == ===区别
  6. PHP的垃圾回收机制
  7. zval结构
  8. 防sql注入
  9. 跨域问题
  10. 长链接和长轮询

面向对象、设计模式

  1. 接口和抽象类区别
  2. 单继承
  3. construct的调用顺序(子类父类之间)
  4. 设计模式(工厂模式、策略模式、单例模式、装饰模式比较常见)
  5. OOP特性,通过哪些机制实现的
  6. 重写和重载区别
  7. 静态类静态方法
  8. 根据某个需求设计一个类(主要考虑类之间的继承关系和属性的权限设置)

项目

  1. 项目中遇到的困难
  2. 系统的量级、pv、uv等
  3. 应对高并发的解决办法(分布式)
  4. 在项目中主要负责了哪些工作。
  5. nginx的负载均衡
  6. 分布式缓存的一致性,服务器如何扩容(哈希环)

粉丝福利, 免费领取C/C++ 开发学习资料包、技术视频/项目代码,1000道大厂面试题,内容包括(C++基础,数据库,高性能网络,组件设计,中间件开发,框架,分布式架构,云原生等进阶学习资料和最佳学习路线)↓↓↓↓↓↓见下面↓↓文章底部点击免费领取↓↓

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值