第零部分 技术路上的感悟
0、知识点多而杂(头疼),有些需要深入理解原理,有些需要记忆。
1、对一些人来说,技术不是最好的路,技术不是最坏的路,技术是唯一的路。持续的往前走,不断的学,反反复复,复复反反。
2、有些语音离数据结构和算法更近,比如Java中的很多Hash结构是通过红黑树实现的。这样的更容易有亲近感。深刻的记得,工作第二年的时候,听技术经理讨论红黑树,就跟一个初中生听别人讨论高等数学一样。
3、面试的时候,知识结构不全面的人,容易顾此失彼,发挥会不稳定,就会体现所谓的运气。选择少的人,容易患得患失,好不容易获得的一个offer, 出现了一一些波折,就会夙兴夜寐的感叹。
4、以前很天真,想着在一家公司工作3年后,换一份工作,期间休息2个月(不是工作最重要,是钱最重要,生而为人不应该只有工作)。工作6年了,还未实现。尽力往这个方向靠。
5、对于作者,摔一跤摔得在重,也是摔在生活的垫子上,都是素材;对于程序员,MacTalk说编程语言就像是青龙偃月刀之于关羽,花再多的时间也在所不惜。通俗一点说就是,每一步都算。
围绕LNMP展开
第一部分 PHP
0、变量类型, PHP5和PHP7的区别。《PHP7和PHP5区别》《PHP生命周期5个阶段》
1、数组底层。《PHP数组底层实现》
2、魔术方法。《PHP魔术方法笔记》
3、GC 《GC及PHP GC学习笔记》
4、框架加载流程和原理
单入口、ORM
《Yaf加载机制调研》
第二部分 MySQL
一、知识点
0、事务和锁 《事务及特性笔记》《数据库事务隔离级别笔记》《MySQL InnoDB存储引擎锁笔记》
1、存储引擎&索引 《MySQL存储引擎和索引》《B+树学习笔记》《MySQL最左前缀原则的原因》《B+树在MySQL索引存储中的应用》《MySQL技术内幕(InnoDB存储引擎)读书笔记》《红黑树学习笔记》
2、主从配置和原理。《MySQL主从同步配置笔记》《MySQL主从同步原理笔记》
2、数据库优化
库表设计(设计的时候,考虑分库,分表,冷热数据拆分)
表结构的优化(存储引擎,索引结构,索引类型,数据类型,注释)
二、高频提问:
0、MySQL索引结构?
思路:分Innode,还是MyISAM存储引擎。然后展开说明。
1、索引为什么用B+树,不用红黑树?
2、索引为什么用B+树,不用B树?
思路:从演化来说明:二叉查找树 -> 平衡二叉树(AVL树) | 红黑树 -> B树 -> B+树 -> B*树
《MySQL索引为什么用B+树,不是B树,红黑树》
3、索引的最左前缀原则是什么?为什么?
思路:范围
三、思考
0、B树中间节点存的除了关键字,还有啥?
1、多列索引如何构建B+树?
第三部分 缓存系统(Redis、MC)
1、缓存中间件比较、Memcache 《Redis和Memcached区别》
2、分布式锁
用setnx来抢占锁,获得锁后用expire()来释放。
还有一个更好的办法通过set, 结合setnx和expire的功能
// Will set the key, if it doesn't exist, with a ttl of 10 seconds $redis->set('key', 'value', ['nx', 'ex'=>10]);
3、Redis性能高的原由。《Redis性能为啥这么高》
4、zset跳表结构 《Redis sorted sets score线性变换对性能没有影响》
5、主从、哨兵、集群
《Redis主从复制配置笔记》《Redis哨兵配置笔记》《Redis Cluster原理笔记》《Redis集群配置笔记》
6、持久化 《Redis持久化总结笔记》
7、淘汰策略(GC)《Redis数据过期策略及内存淘汰机制(GC)》
8、hash底层结构,哈希冲突解决办法,rehash
把博客这个系列的问题都弄懂了就差不错了(之前是《吊打面试官》系列)
掘金:《我们一起进大厂》系列- Redis基础
掘金:《我们一起进大厂》系列-缓存雪崩、击穿、穿透
掘金:《我们一起进大厂》系列-Redis哨兵、持久化、主从、手撕LRU
掘金:《我们一起进大厂》系列-Redis双写一致性、并发竞争、线程模型
掘金:《我们一起进大厂》系列-Redis常见面试题(带答案)
第四部分 Nginx
高性能原因。《C10K问题及epoll》
进程模型 《Nginx进程模型》
nginx_lua 《nginx_lua为什么比PHP性能高》
第五部分 操作系统(Linux)
0、常见命令
1、内存管理
2、进程、线程、协程区别
第六部分 消息队列中间件MQ
第七部分 网络
0、网络状态码。《HTTP状态码笔记》
1、三次握手
2、HTTP协议。《图解HTTP笔记》《TCP三次握手四次挥手笔记》
第八部分 算法
经历过算法题:《经历过的算法题》
0、快速排序。《排序之快速排序》
1、二分查找 《二分查找PHP实现笔记》
2、链表 《单链表反转》
3、动态规划
4、堆排序(Top K问题,优先队列,合并小文件,求中位数)《堆及堆排序PHP实现》leetcode#347前K个高频元素
第九部分 架构和设计
0、设计模式。《设计模式笔记》
1、系统设计
秒杀系统 《秒杀系统设计笔记》
分布式系统
电商下单系统
微服务
第十部分 其他语言
0、Golang。《Golang面试题》
1、Openresty
第十一部分 面试准备
0、简历上的东西
1、技术点
2、心理准备
第十二部分 绝好的面试资料