马上要到金九银十了,小编总结了一些面试题目包含百度/腾讯/小米/网易/搜狗/知乎/京东/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解析过程
深入部分
-
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进程时的操作,
这个部分我回答的都不好,只能是死记硬背,建议基础好的同学多看看操作系统这部分,能大大加分。
四、算法
基础
-
剑指OFFER的各个题目是最常见的,即使不是原题也是题目的变体,因为面试不像笔试,一般不会出特别困难的题目,所以剑指OFFER上小而精的题目就非常适合。建议手刷一遍。PHP的同学可以参考专栏剑指OFFER
-
二叉树相关(层次遍历、求深度、求两个节点距离、翻转二叉树、前中后序遍历)
-
链表相关(插入节点、链表位置、使用链表进行大数字的加减,双向链表实现队列、寻找链表中的环)
-
堆(大量数据中寻找最大N个数字几乎每次都会问,还有堆在插入时进行的调整)
-
排序(八大排序,各自的时间复杂度、排序算法的稳定性。快排几乎每次都问)
-
二分查找(一般会深入,如寻找数组总和为K的两个数字)
-
两个栈实现队列。
-
图(深度广度优先遍历、单源最短路径、最小生成树)
-
动态规划问题。
深入
-
红黑树性质
-
分治法和动态规划的区别
-
计算时间复杂度
-
二叉树和哈希表查找的时间复杂度
-
栈和链表是面试算法的时候经常用到的工具,多考虑怎么用数据结构的性质
-
解决,因为面试不像笔试,对基础数据结构关注的比较多一些,一般问题也比较简单。然后取模也是常用的工具(比如有一次问怎么让100个进程按规定的权重被调用,就可以用取模的方式)。
-
面试官一般会先出简单的问题,然后深入地问下去,最好是根据他的思路走,因为能听懂他的提示也是需要考察的能力。
-
LINUX
-
硬链接和软连接区别
-
kill用法,某个进程杀不掉的原因(进入内核态,忽略kill信号)
-
linux用过的命令
-
系统管理命令(如查看内存使用、网络情况)
-
管道的使用 |
-
grep的使用,一定要掌握,每次都会问在文件中查找
-
shell脚本
-
find命令
-
awk使用
-
语言部分(PHP)
-
数组操作函数
-
字符串操作函数(数组和字符串的函数是最常问的,非常多,一定不要记混了)
-
指针和引用区别
-
堆和栈的区别
-
== ===区别
-
PHP的垃圾回收机制
-
zval结构
-
防sql注入
-
跨域问题
-
长链接和长轮询
面向对象、设计模式
-
接口和抽象类区别
-
单继承
-
construct的调用顺序(子类父类之间)
-
设计模式(工厂模式、策略模式、单例模式、装饰模式比较常见)
-
OOP特性,通过哪些机制实现的
-
重写和重载区别
-
静态类静态方法
-
根据某个需求设计一个类(主要考虑类之间的继承关系和属性的权限设置)
项目
-
项目中遇到的困难(提前想好,并且把实现或者优化方法说清楚)
-
系统的量级、pv、uv等
-
应对高并发的解决办法(分布式)
-
在项目中主要负责了哪些工作。
-
nginx的负载均衡
-
分布式缓存的一致性,服务器如何扩容(哈希环)
总之要把写在简历上的项目部分熟悉一遍,技术栈、项目功能、难点都要考虑好。
下面是小编自己总整理出来的一些互联网大厂全栈知识点面试专题,未涉及太全请各位读者老哥谅解
各大厂面试专题整理
-
计算机网络(两份文档全概括)
编辑切换为居中
添加图片注释,不超过 140 字(可选)
-
操作系统
编辑
添加图片注释,不超过 140 字(可选)
编辑
添加图片注释,不超过 140 字(可选)
编辑切换为居中
添加图片注释,不超过 140 字(可选)
-
基础篇
编辑切换为居中
添加图片注释,不超过 140 字(可选)
-
JVM篇
编辑切换为居中
添加图片注释,不超过 140 字(可选)
-
多线程&并发篇
编辑切换为居中
添加图片注释,不超过 140 字(可选)
-
Spring篇
编辑切换为居中
添加图片注释,不超过 140 字(可选)
-
MyBatis篇
编辑切换为居中
添加图片注释,不超过 140 字(可选)
-
SpringBoot篇
编辑切换为居中
添加图片注释,不超过 140 字(可选)
-
MySQL篇
编辑切换为居中
添加图片注释,不超过 140 字(可选)
-
Redis篇
编辑切换为居中
添加图片注释,不超过 140 字(可选)
-
Nginx篇
编辑切换为居中
添加图片注释,不超过 140 字(可选)
-
MQ篇
编辑切换为居中
添加图片注释,不超过 140 字(可选)
-
数据结构与算法篇
编辑切换为居中
添加图片注释,不超过 140 字(可选)
-
Linux篇
编辑切换为居中
添加图片注释,不超过 140 字(可选)
-
简历篇
资源获取:
大家 点赞、收藏、关注、评论啦 、 查看👇🏻👇🏻👇🏻 微信公众号获取联系方式👇🏻👇🏻👇🏻
精彩专栏推荐订阅:在 下方专栏👇🏻👇🏻👇🏻👇🏻