后端开发必备

原文链接:https://www.nowcoder.com/discuss/61958

一、计算机网络

 

 

基础部分  

 

  • TCP 报头格式

  • UDP 报头格式

  • TCP/UDP 区别(不仅是宏观上的,还要了解各自的机制)

  • HTTP 状态码(熟悉使用场景,比如在缓存命中时使用哪个)

  • HTTP 协议(一些报头字段的作用,如cace-control、keep-alive )

  • OSI 协议、TCP/IP 协议以及每层对应的协议

  • SESSION 机制、cookie 机制

  • TCP 三次握手、四次挥手(面试官最喜欢问的,建议每天手撸一遍,而且不只是每次请求的过程,各种 FIN_WAIT、TIME_WAIT 状态也要掌握)

  • 打开网页到页面显示之间的过程(涵盖了各个方面,DNS 解析过程,Nginx 请求转发、连接建立和保持过程、浏览器内容渲染过程,考虑的越详细越好)

  • http 和 https 区别 (https 在请求时额外的过程,https 是如何保证数据安全的)

  • IP 地址子网划分

  • POST 和 GET 区别

  • DNS 解析过程

     

深入部分 


TCP 如何保证数据的可靠传输的(这个问题可以引申出很多子问题,拥塞控制慢开始、拥塞避免、快重传、滑动窗口协议、停止等待协议、超时重传机制,最好都能掌握) 
地址解析协议 ARP 
交换机和路由器的区别

 

二、数据库

 

 

基础部分  

 

事务四大特性( ACID )

  • 数据库隔离级别(每个级别会引发什么问题,mysql 默认是哪个级别)

  • MYSQL 的两种存储引擎区别(事务、锁级别等等),各自的适用场景

  • 数据库的优化(从 sql 语句优化和索引两个部分考虑)

  • B+ 索引和 hash 索引,各自的区别

  • B+ 索引数据结构,和 B 树的区别

  • 索引的分类(主键索引、唯一索引),最左前缀原则,哪些情况索引会失效

  • 聚集索引和非聚集索引区别

  • 有哪些锁(乐观锁悲观锁),select 时怎么加排它锁

  • 关系型数据库和非关系型数据库区别

  • 了解 nosql

  • 数据库三范式,根据某个场景设计数据表(可以通过手绘 ER 图)

  • 数据库的主从复制

  • 使用 explain 优化 sql 和索引

  • long_query 怎么解决

  • 内连接、外连接、交叉连接、笛卡儿积等

 

深入  

 

  • MVCC 机制

  • 根据具体场景,说明版本控制机制

  • 死锁怎么解决

  • varchar 和 char 的使用场景

  • mysql 并发情况下怎么解决(通过事务、隔离级别、锁)

  • Redis  

  • redis 数据结构有哪些

  • redis 队列应用场景

  • redis 和 Memcached(支持数据持久化)

  • 分布式使用场景(储存 session 等)

  • 发布/订阅使用场景

 

三、操作系统

 

 

  • 内存的页面置换算法

  • 进程调度算法

  • 进程间通信方式

  • 进程线程区别

  • 进程之间的通信

  • 父子进程、孤儿进程

  • fork 进程时的操作

 

四、算法

 

 

基础  

 

  • 二叉树相关(层次遍历、求深度、求两个节点距离、翻转二叉树、前中后序遍历)

  • 链表相关(插入节点、链表逆置、使用链表进行大数字的加减,双向链表实现队列、寻找链表中的环)

  • 堆(大量数据中寻找最大N个数字几乎每次都会问,还有堆在插入时进行的调整)

  • 排序(八大排序,各自的时间复杂度、排序算法的稳定性)

  • 二分查找(一般会深入,如寻找数组总和为 K 的两个数字)

  • 两个栈实现队列

  • 图(深度广度优先遍历、单源最短路径、最小生成树)

  • 动态规划问题

     

深入    

 

  • 红黑树性质

  • 分治法和动态规划的区别

  • 计算时间复杂度

  • 二叉树和哈希表查找的时间复杂度

  • 栈和链表工具

 

五、LINUX

 

 

  • 硬链接和软连接区别

  • kill 用法,某个进程杀不掉的原因(进入内核态,忽略 kill 信号)

  • linux 用过的命令

  • 系统管理命令(如查看内存使用、网络情况)

  • 管道的使用

  • grep 的使用,一定要掌握,每次都会问在文件中查找

  • shell 脚本

  • find 命令

  • awk 使用

 

六、语言部分( PHP )

 

 

  • 数组操作函数

  • 字符串操作函数

  • 指针和引用区别

  • 堆和栈的区别

  • == ===区别

  • PHP 的垃圾回收机制

  • zval 结构

  • 防 sql 注入

  • 跨域问题

  • 长链接和长轮询

 

面向对象、设计模式  

 

  • 接口和抽象类区别

  • 单继承

  • construct 的调用顺序(子类父类之间)

  • 设计模式(工厂模式、策略模式、单例模式、装饰模式比较常见)

  • OOP 特性,通过哪些机制实现的

  • 重写和重载区别

  • 静态类静态方法

  • 根据某个需求设计一个类(主要考虑类之间的继承关系和属性的权限设置)

 

七、项目

 

 

  • 项目中遇到的困难

  • 系统的量级、pv、uv 等

  • 应对高并发的解决办法(分布式)

  • nginx 的负载均衡

  • 分布式缓存的一致性,服务器如何扩容(哈希环)

 

end

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值