PHPer面试攻略

第零部分 技术路上的感悟

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、心理准备

第十二部分 绝好的面试资料

https://cyc2018.github.io/CS-Notes/#/
CS-Notes算法整理

发表评论

电子邮件地址不会被公开。 必填项已用*标注