后端开发:深入浅出的知识准备体系分享一、计算机网络二、数据库三、操作系统四、算法LINUX语言部分(PHP)项目

博主渣渣本科,挣扎到十一月秋招终于结束了。面过百度/腾讯/小米/网易/搜狗/知乎/京东/360/瓜子。期间总结了一些面试题目,现在放上来。由于是博主自己的面经记录,所以涵盖不全面的话诸位请谅解。

根据博主的面试经验来看,面试有一定的层次性,如bat级别公司每个点都会深入,而有些公司则只会问到表层,所以将每个领域都分为必须掌握和深入了解这两个部分。

一、计算机网络

基础部分

  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解析过程 

深入部分

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

14. 地址解析协议ARP

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

二、数据库

基础部分

  事务四大特性(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进程时的操作,

这个部分我回答的都不好,只能是死记硬背,建议基础好的同学多看看操作系统这部分,能大大加分。

四、算法

基础

剑指OFFER的各个题目是最常见的,即使不是原题也是题目的变体,因为面试不像笔试,一般不会出特别困难的题目,所以剑指OFFER上小而精的题目就非常适合。建议手刷一遍。PHP的同学可以参考专栏剑指OFFER

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

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

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

  排序(八大排序,各自的时间复杂度、排序算法的稳定性。快排几乎每次都问)   

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

  两个栈实现队列。   

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

    动态规划问题。 

深入

    红黑树性质 

  分治法和动态规划的区别   

  计算时间复杂度   

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

栈和链表是面试算法的时候经常用到的工具,多考虑怎么用数据结构的性质解决,因为面试不像笔试,对基础数据结构关注的比较多一些,一般问题也比较简单。然后取模也是常用的工具(比如有一次问怎么让100个进程按规定的权重被调用,就可以用取模的方式)。

面试官一般会先出简单的问题,然后深入地问下去,最好是根据他的思路走,因为能听懂他的提示也是需要考察的能力。

LINUX

  硬链接和软连接区别   

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

  linux用过的命令   

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

  管道的使用 |   

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

  shell脚本   

  find命令   

  awk使用 

语言部分(PHP)

  数组操作函数   

  字符串操作函数(数组和字符串的函数是最常问的,非常多,一定不要记混了)   

  指针和引用区别   

  堆和栈的区别   

  == ===区别   

  PHP的垃圾回收机制   

  zval结构   

  防sql注入   

  跨域问题   

  长链接和长轮询 

面向对象、设计模式

  接口和抽象类区别   

  单继承   

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

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

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

  重写和重载区别   

  静态类静态方法   

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

项目

  项目中遇到的困难(提前想好,并且把实现或者优化方法说清楚)   

  系统的量级、pv、uv等   

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

  在项目中主要负责了哪些工作。   

  nginx的负载均衡   

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

  总之要把写在简历上的项目部分熟悉一遍,技术栈、项目功能、难点都要考虑好。

本文来源于牛客网

作者:重口味 ぅヾ

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏大数据和云计算技术

伸手党福利-从零开始玩转图库

tinkerpop是一个图库标准,一个框架,学习图库,先从这个项目入手比较合适, neo4j, janusGraph只是它两个组件(图storage-engin...

8003
来自专栏牛客网

2018秋招面经-后端开发

博主渣渣本科,挣扎到十一月秋招终于结束了。面过百度/腾讯/小米/网易/搜狗/知乎/京东/360/瓜子。期间总结了一些面试题目,现在放上来。由于是博主自己的面经记...

4109
来自专栏java一日一条

Java多线程并发锁和原子操作,你真的了解吗?

对于Java多线程,接触最多的莫过于使用synchronized,这个简单易懂,但是这synchronized并非性能最优的。今天我就简单介绍一...

983
来自专栏斑斓

漂亮的with,鱼与熊掌可以兼得

假设要加载磁盘上的一个文件,并以二进制形式读取文件的数据。若要从健壮性的角度考虑,需得考虑两种异常情况: 加载文件失败,例如给定的文件路径并不存在该文件 读取文...

3778
来自专栏老秦求学

汇编语言学习01

汇编语言(8086cpu) 恩,学习一门课程,我觉得应该有一定的条理性,而且自己要勤加思考才能学好,条理性:最好就是先整体的介绍一下全本书,然后再详细的介绍各个...

2989
来自专栏牛客网

2018秋招面经-后端开发

1775
来自专栏Coding+

youtube-dl CMD

您可以通过将任何支持的命令行选项放置到配置文件来配置 youtube-dl。在 Linux 和 OS X 上,系统范围的配置文件位于 /etc/youtube-...

3754
来自专栏吉浦迅科技

DAY35:阅读流程控制语句

1464
来自专栏牛客网

CVTE后台实习面经笔试:面试:(现场面,面了65分钟,已挂)

笔试: 选择题 1、AVL树相关的,比如高度之类的, 2、gc方面的,我记得有个选项是说调用System.gc()之后会不会同步gc 3、标记清除算法 4、数据...

3817
来自专栏牛客网

2018秋招面经-后端开发

2973

扫码关注云+社区

领取腾讯云代金券