面试问题

一、计算机网络
基础部分

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的两个数字)
两个栈实现队列。
图(深度广度优先遍历、单源最短路径、最小生成树)
动态规划问题。

深入

红黑树性质

分治法和动态规划的区别
计算时间复杂度
二叉树和哈希表查找的时间复杂度
具体题目记录

  1. 一个文本文件中每一行中有一个URL,最多一万行,统计每一个URL的次数,输出到另外一个文件中,每一行前面是URL,后面是个数。
  2. 单链表的逆序
  3. 一个函数实现给定字符串,去除前面和后面的空格,比如“ ab cd ”,最后得到的结果是”ab cd”,不能改变字符串的地址。
  4. 对比cookie和session,有一个值错误则不正确
  5. 查找10的阶乘后面有几个0
  6. 字符串匹配
  7. 字符串移位,给出字符串abc##dfg##gh,实现将所有#移至字符串串头。输出####abcdfggh(个人认为可以用后向移位,减少移位次数)
  8. 给出一颗二叉树,两个叶节点,找到这两个叶节点互连通的一条最短路径。
  9. 两个日期计算天数差
  10. 100个有序数组合并
  11. 矩阵的最大子矩阵和
  12. 给定一棵多叉树,每个节点有一个编号,现在要对节点排序,要求对于每个节点,它的父节点排在它后面,如果一棵树有N个节点,那么肯定有N-1条边。输入的数据形式为:Map.Entry

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

项目
项目中遇到的困难(提前想好,并且把实现或者优化方法说清楚)
系统的量级、pv、uv等
应对高并发的解决办法(分布式)
在项目中主要负责了哪些工作。
nginx的负载均衡
分布式缓存的一致性,服务器如何扩容(哈希环)
项目中用到了哪些技术
服务器性能如何测试
项目中印象深刻的东西
项目中遇到过哪些坑,怎么解决的
项目中为什么用redis以及怎么实现相关功能
用过的开源框架(路由问题),框架的原理
消息队列的应用场景(想一个)
有没有用到非关系型数据库
网站负载变大时怎么办
SOA?
WebService?
《大型网站技术架构:核心原理与案例分析》
redis的消息队列 redis的数据类型
OAuth认证过程
单点登陆系统 分布式缓存的使用场景
一个Controller调用两个Service,这两Service又都分别调用两个Dao,问其中用到了几个数据库连接池的连接?
图片是怎么存储的
分布式一致性协议、分布式锁(应用场景)
项目中的网络编程
划一下项目的架构
MVC的路由机制怎么实现的(路由很重要)
为什么要用hadoop
自己写的接口如何防止被别人恶意调用?印象笔记
如何实现数据容灾,
怎样实现负载均衡
如何解决单节点负载过
Redis和memcache区别
redis的持久化
总之要把写在简历上的项目部分熟悉一遍,技术栈、项目功能、难点都要考虑好。

转载:https://blog.csdn.net/acingdreamer/article/details/78479476

你可能感兴趣的:(技术)