知识点总结系列之:(六)网络


网络相关知识点总结

  • OSI七层模型是什么?哪七层?
  • TCP/IP 4 层协议栈是哪 4 层?每一层具体的工作是什么,每一层有哪些协议?
  • TCP 和 UDP 的区别?
  • TCP 包头的组成?
  • TCP 网络状态查看?
  • TCP 的三次握手过程?并描述客户端和服务端状态的变化
  • 为什么要三次握手?如果不是三次有什么问题?
  • DDOS 攻击了解吗?如何预防 DDOS 攻击?
  • TCP 四次挥手的过程?
  • 为什么要四次挥手?否则的话有什么问题?
  • Time_Wait状态是什么,为什么会有time_wait状态?哪一方会有time_wait状态,如何避免?
  • time_wait状态占用资源(尽可能的详细)?
  • TCP 包为什么需要 Seq
  • 数据包为什么会乱序?
  • TCP 如何实现的可靠传输?
  • TCP 的拥塞控制是怎样的?
  • TCP 几种拥塞机制的重传机制?
  • 什么是滑动窗口?
  • TCP 中客户端发送 SYN 后客户端和服务器分别处在什么状态?
  • 服务器调用 send 后返回发送数据大小,是否可以认为客户端已收到?如何确保客户端收到数据?
  • TCP 对网络拥堵的判断?
  • TCP 和 UDP 分别的使用场景有哪些?
  • UDP 包头的格式是什么?
  • UDP 协议的优点和缺点是什么?

  • 说说 HTTP 协议?

  • 什么是分块传输编码?
  • HTTP 和 TCP 有什么关系?
  • HTTP 1.0 和 HTTP 1.1 的差别?
  • HTTP pipeline 流水线机制?
  • 理解 HTTP 2.0 协议吗?
  • 如何使用 HTTP2.0 协议?
  • HTTP 头部常见字段有哪些?
  • 为什么 HTTP 是无连接的?
  • GET 和 POST 区别?
  • GET请求中URL编码的意义?
  • 有没有保持长连接的 HTTP ?
  • HTTP 常见状态码及原因短语?
  • 304 状态码的意义?在 HTTP 协议中的实现?
  • 如何判断服务器文件是否已修改?知道浏览器缓存的文件与服务器文件不一致?在 HTTP 中哪个字段?
  • Session 和 Cookie 机制?产生原因?对比一下?
  • 用过 HTTPS 吗?HTTPS 和 HTTP 的区别是什么?
  • 对称加密与非对称加密区别?
  • TLS/SSL 协议的握手过程?
  • CA 证书的签发原理?
  • SSL 握手需要几个随机数?
  • HTTPS 性能如何优化?

  • IP 有几类地址,A 类地址和 B 类地址的区别是什么?

  • 局域网没有 IP 时如何通信?如何得知 mac 地址?
  • 什么是网络虚拟化?
  • 简单描述一下 VPN 工作原理?
  • 简单描述一下 DNS 工作原理?
  • 了解代理服务吗?什么是代码服务?
  • 代理请求的过程?
  • 代理协议有哪些?
  • 代理的功能有哪些?
  • 什么是反向代理?
  • 反向代理的作用?
  • 如何抓包?
  • netstat、tcpdump、ipcs、ipcrm 命令使用过吗?
  • 大规模连接上来,并发模型怎么设计怎么选择?(并发服务器实现)
  • select, poll 和 epoll 的区别?

知识点总结系列之:(五)架构


架构相关知识点总结

  • Nginx 的工作原理?
  • Nginx 的进程模型?
  • Master 进程工作方式?
  • Worker 进程的工作方式?
  • Nginx + Fastcgi 运行原理?
  • Nginx + PHP-fpm 配置?
  • Nginx采用多进程模型好处?
  • Nginx支持的事件模型如下?
  • Nginx.conf 的优化?
  • Nginx 为什么高性能?

  • Apache 的工作原理

  • Apache 和 Nginx 网络模型比较

  • 什么是Memcache?

  • Memcache 使用场景?
  • Memcache 工作原理?
  • Memcache 内存管理
  • Memcache 分布式
  • Memcache 线程管理
  • Memcached 特性与限制
  • Redis 和 Memcache 对比方案

  • 单点登录

  • OAuth2.0 认证
  • 常见设计模式,应用场景
  • MVC
  • IOC
  • AOP
  • 微服务思想

知识点总结系列之:(四)Redis


Redis 相关知识点总结

  • 为什么使用redis?
  • 使用redis有什么缺点?
  • 单线程的redis为什么这么快?
  • redis的数据类型,以及每种数据类型的使用场景?
  • redis的过期策略以及内存淘汰机制?
  • redis和数据库双写一致性问题?
  • 如何应对缓存穿透问题?
  • 如何应对缓存雪崩问题?
  • 如何解决 redis 的并发竞争问题?
  • redis 底层的数据结构有哪些?各自有什么用?
  • redis 的主从复制原理?
  • redis 存储的实现方法?
  • redis 相对 memcached 有哪些优势?
  • 如何实现 redis 集群?
  • redis_cluster 的实现机制?
  • redis 集群的最大结点个数?
  • 怎么用 redis 实现分布式锁?
  • 假如Redis里面有1亿个key,其中有10w个key是以某个固定的已知的前缀开头的,如果将它们全部找出来?
  • 使用过Redis做异步队列么,你是怎么用的?
  • redis 能不能生产一次消费多次呢?
  • pub/sub有什么缺点?
  • redis如何实现延时队列?
  • 有大量的key需要设置同一时间过期,一般需要注意什么?
  • Pipeline 有什么好处,为什么要用pipeline?
  • 为什么redis小等于39字节的字符串是embstr编码,大于39是raw编码?
  • redis 中 zset 数据结构的实现?
  • 为什么 zset 用跳表而不用平衡树?
  • redis 常用配置?
  • redis 主从复制的实现原理?
  • redis 内存管理和优化?
  • redis 持久化方案?

知识点总结系列之:(三)Mysql


MySQL 常见知识点总结

  • Mysql的技术特点是什么?
  • MySQL 逻辑架构?每一部门的具体作用?
  • MySQL 的查询过程?
  • MySQL 常用的存储引擎有哪些?
  • Heap 表是什么?
  • Heap 表的大小可通过称为max_heap_table_size的Mysql配置变量来控制?
  • InnoDB 存储引擎的特点?
  • MyISAM 存储引擎的特点?
  • 一张表,里面有ID自增主键,当insert了17 条记录之后,删除了第15,16,17条记录,再把Mysql重启,再insert一条记录,这条记录的ID是18还是15?
  • 使用过哪些 Mysql 的索引?
  • 覆盖索引的使用?
  • 唯一索引的使用?
  • Mysql 有哪些锁?
  • 什么时候会发生表锁?
  • 什么时候用行锁?
  • FLOAT 和 DOUBLE 的区别?
  • CHAR 和 VARCHAR 的区别?
  • 区分CHAR_LENGTH和LENGTH?
  • 在 Mysql 中ENUM的用法是什么?
  • 请简洁描述 Mysql 中InnoDB支持的四种事务隔离级别名称,以及逐级之间的区别?
  • 如何定义REGEXP?
  • 列的字符串类型有哪些?
  • 如何获取当前的 Mysql 版本?
  • TIMESTAMP在UPDATE CURRENT_TIMESTAMP数据类型上做什么?
  • 主键和候选键有什么区别?
  • MyISAMchk是用来做什么的?
  • MYSQL数据库服务器性能分析的方法命令有哪些?
  • federated 表是什么?
  • 如果一个表有一列定义为TIMESTAMP,将发生什么?
  • 列设置为AUTO INCREMENT时,如果在表中达到最大值,会发生什么情况?
  • 怎样才能找出最后一次插入时分配了哪个自动增量?
  • 你怎么看到为表格定义的所有索引?
  • LIKE声明中的%和_是什么意思?
  • 如何在Unix和Mysql时间戳之间进行转换?
  • LIKE和REGEXP操作有什么区别?
  • BLOB和TEXT有什么区别?
  • Mysql如何优化DISTINCT?
  • 可以使用多少列创建索引?
  • 解释访问控制列表?
  • MYSQL支持事务吗?
  • Mysql里记录货币用什么字段类型好?
  • MYSQL数据表在什么情况下容易损坏?
  • Mysql中有哪几种锁?如何使用?什么时候发生?
  • 索引实现机制?
  • 数据库查询过慢的优化?
  • 建立 A 列和 B 列的索引需要考虑什么?
  • 高并发访问 MYSQL 时,如何保持数据一致性?
  • 什么时候 MySQL 会对表上锁?对一行上锁?
  • 怎么保证主从服务器中数据库的同步?
  • 怎么保证数据库同时操作几个表的一致性?
  • 数据库之间如何同步?
  • 数据库三大范式?
  • 字符编码选择?
  • 熟悉基本 SQL 操作
  • db 的各种性能指标?
  • 怎么进行数据库优化?
  • Mysql 主从复制的原理是什么?
  • 主从复制中断了怎么办?
  • 主从复制出现延迟怎么处理?
  • 主库崩溃了怎么办?
  • 聚集索引和非聚集索引区别?

知识点总结系列之:(二)Linux 与操作系统


Linux 与操作系统的知识点总结

操作系统内核

  • 什么是孤儿进程僵尸进程?
  • 指针对应的地址是不是物理地址?
  • 物理地址和虚拟地址通常叫做什么?缩写是什么?
  • 操作系统的寻址方式?
  • Linux 中如何计算可用内存?
  • Linux 中如何用 top 命令中查看虚地址和实地址的信息?
  • 如何用搜索引擎去了解 top 中的虚地址?不用搜索引擎怎么知道?
  • top 的输出中哪些是表明了内存?
  • 根据 top 计算可用内存有多少?
  • 用 top 看耗性能的线程?
  • 还有哪些命令可以找出性能瓶颈?
  • epoll 与 select 比较?
  • epoll 的缺点,如何克服缺点?
  • epoll 机制中文件描述符就绪时如何从内核态通知到用户态的进程?
  • epoll 实现?
  • 说说同步异步的区别?
  • 进程间通信的方式?
  • 进程间的通信有哪些机制?在资源内存方面比较如何?
  • 同一进程线程间的通信;不同进程线程间的通信;
  • 如何判断系统在哪些地方耗费性能?
  • cpu 调度的单位是什么?
  • 如何让多核 cpu 更好的利用资源?
  • 什么是缺页?缺页的算法?缺页中断时操作系统怎么做?
  • 如何控制两个进程对一个数据的访问?怎么处理加锁问题?
  • 说一说协程?
  • 是否了解 netstat?
  • 在 shell 中用 ./a.out | wc- l 结果是多少?管道的输入是哪个进程的?
  • 谈谈 Linux 的文件权限。让只有拥有者才能读写?让拥有者只能读和执行? 删除文件需要什么权限?
  • 假如一个进程在对文件进行读写,管理员把文件删除了怎么办?
  • 协程与进程线程比较有什么优势?
  • 计算机从电源加载开始的启动过程?
  • 什么是中断调用?中断程序的分类?
  • 内核态和用户态的区别?
  • 为什么需要内核态?
  • 什么时候进入内核态?
  • 多线程需要加锁的变量?
  • 程序在内存中的布局?
  • 什么是死锁,如何防止死锁?
  • lsof作用和使用?
  • strace作用和使用?
  • ptrace作用和使用?
  • 什么是内存管理?
  • Linux 内存管理的方案有哪些?
  • 内存池的理解?
  • 什么是内存泄漏?如何发现内存泄漏?如何避免内存泄漏?
  • 栈空间的大小?
  • 操作系统自旋锁?
  • 进程调度的算法?
  • 文件被如何加载到内存中?
  • linux中各种 I/O 模型原理 —— select 和 epoll
  • 阻塞和非阻塞 I/O 区别
  • linux系统文件机制
  • 多进程同步方式
  • 使用过哪些进程间通讯机制,并详细说明(重点)
  • linux系统的各类异步机制
  • 信号:列出常见的信号,信号怎么处理?
  • i++ 是否原子操作?
  • exit() _exit()的区别?
  • linux的内存管理机制是什么?
  • linux的任务调度机制是什么?
  • 系统如何将一个信号通知到进程?
  • 什么是死锁?如何避免死锁?
  • 共享内存的使用实现原理?
  • 多线程和多进程的区别(从cpu调度,上下文切换,数据共享,多核cup利用率,资源占用,等等各方面回答。哪些东西是一个线程私有的?答案中必须包含寄存器);
  • 标准库函数和系统调用的区别?
  • 地址空间的栈和堆的大小限制?
  • 静态库和动态库的区别?

Linux 命令

  • ln 硬链接和软链接区别?
  • kill 进程杀不掉的原因?
  • linux 查看日志文件的方式?
  • 常用的命令
    • ls
    • -l
    • -a
    • mkdir (-p)
    • cd
    • touch
    • echo
    • cat
    • cp
    • mv
    • rm (-r,-f)
    • find
    • wc
    • grep
    • rmdir
    • tree
    • pwd
    • ln
    • more,less
    • head,tail
  • 系统管道命令

    • stat
    • who
    • whoami
    • hostname
    • top
    • ps
    • du
    • df
    • ifconfig
    • ping
    • netstat
    • man
    • clear
    • alias
    • kill
  • 解压缩

    • gzip
    • bzip
    • tar(c,x,z,j,v,f)
  • 关机重启

    • shutdown(-r,-h now)
    • halt
    • reboot

知识点总结系列


  1. 数据结构与算法
  2. Linux 与操作系统
  3. Mysql
  4. Redis
  5. 架构
  6. 网络
  7. PHP
  8. Go

知识点总结系列之:(一)数据结构算法


一些常见的数据结构和算法总结

数据结构

  • 数组和链表的区别?
  • 链表的一些操作(反转,链表环路判断,双向链表,循环链表)?
  • 队列的应用?
  • 栈的应用?
  • 二叉树的遍历(三种遍历的递归和非递归的实现)?
  • 二叉树的层序遍历?
  • AVL 树是什么?
  • AVL 树的旋转?
  • 红黑树是什么?
  • 有哪些地方应用到红黑树?
  • 红黑树和 AVL 树的比较?
  • B 树、B+ 树的原理?

算法

  • 请简单解释算法是什么?
  • 知道哪些排序算法?
  • 解释什么是快速排序算法?
  • 解释算法的时间复杂度?
  • 有没有 O(n) 的排序算法?
  • 说明什么是Skip list?
  • 解释什么是“哈希算法”,它们用于什么?
  • 列出一些常用的加密算法?
  • 输出所有和为 S 的连续正数序列。序列内按照从小至大的顺序,序列间按照开始数字从小到大的顺序
  • 字符序列 S=”abcXYZdef”,要求输出循环左移3位后的结果,即“XYZdefabc”
  • 输入一棵二叉树,判断该二叉树是否是平衡二叉树
  • 给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回
  • 判断二叉树是否对称
  • 查找字符串中第一个不重复的字符
  • 统计一个数字在排序数组中出现的次数
  • 实现非递归先序、中序、后序遍历二叉树
  • 输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径
  • 输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示
  • 用两个栈来实现一个队列,完成队列的 Push 和 Pop 操作
  • 定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的 main 函数
  • 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数
  • 请实现一个函数,将一个字符串中的空格替换成“%20”
  • 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则
  • 输入一个链表,输出该链表中倒数第k个结点
  • 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序
  • 从上往下打印出二叉树的每个节点,同层节点从左至右打印
  • 输入一棵二叉树,求该树的深度
  • 给定的二叉树,将其变换为源二叉树的镜像
  • 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字
  • 输入两棵二叉树 A,B,判断 B 是不是 A 的子结构。(我们约定空树不是任意一个树的子结构)
  • 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树
  • 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变
  • 给定一个 double 类型的浮点数 base 和 int 类型的整数 exponent。求 base 的 exponent 次方
  • 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字
  • TopK 问题:输入n个整数,找出其中最小的K个数
  • 在一个字符串(1<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置
  • 从上到下按层打印二叉树,同一层结点从左至右输出
  • 请实现一个函数按照之字形打印二叉树(第一行按照从左到右打印,第二层按照从右至左打印,第三行按照从左到右打印)
  • 一个链表中包含环,请找出该链表的环的入口结点
  • 输入一个链表,反转链表后,输出链表的所有元素
  • 输入一个链表,从尾到头打印链表每个节点的值
  • 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项
  • 一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法

  • 假设淘宝一天有5亿条成交数据,求出销量最高的100个商品并给出算法的时间复杂度

  • 有10亿个杂乱无章的数,怎样最快地求出其中前1000大的数
  • 给一列无序数组,求出中位数并给出算法的时间复杂度
  • 输入一个整型数组,求出子数组和的最大值,并给出算法的时间复杂度
  • 给出10W条人和人之间的朋友关系,求出这些朋友关系中有多少个朋友圈(如A-B、B-C、D-E、E-F,这4对关系中存在两个朋友圈),并给出算法的时间复杂度
  • 如图所示的数字三角形,从顶部出发,在每一结点可以选择向左走或得向右走,一直走到底层,要求找出一条路径,使路径上的值的和最大
  • 有一个很长二进制串,求出除以3的余数是多少

答案待补充.