2020年面试----php一线大厂及二线互联网公司面试总结
滴滴、百度、腾讯、360、一点资讯、美图、融360、作业帮、轻松筹、十荟团、易到用车、华图教育、人人车
算法:
https://www.cnblogs.com/wt645631686/category/1003578.html (面试被问过的所有算法都在这里了) (几乎每个大厂都问算法了 :滴滴、百度、腾讯、360、一点资讯,让你当时写)
补充:快速排序法
Redis:
Redis的数据类型(被问频率比较高)
Redis底层数据结构 SSD……等等(被问频率比较高,多了解一下redis内部数据结构)
分布式Redis,如何做到高可用,比如 四台redis,a、b、c、d ,在数据读取过程中,c访问量偏高,排除key的哈希计算,如何做到让其他三台服务器均匀分流
redis锁的使用(当场写代码)
随便说出redis 有序集合的几个命令(通过这个问题而言,最好把redis的命令熟悉熟悉)
Redis和kafka同可以作为消息队列,他们区别在哪里
Redis秒杀抢购(被问频率比较高,还会问注意哪些细节,这里我当时胡思乱想,其实也不知道考虑周不周全,最好百度了解一下细节方案)
Redis和mysql数据如何保持一致(面试官的问法可能会不是这么直接,其实考验的就是这个知识点)
如何限制同一个ip并发访问(轻松筹的面试官不知道是***难我还是不知道redis是单线程的,这块自己多了解一些方案,当时我回答的是用redis来限制,就被他一直追问)
上一个问题深造:
一点资讯、美图、滴滴面试官:如何限制在一分钟时间内某个ip的访问次数,比如一分钟限制访问10次(这个问题和上一个问题不一样。)
我回答:用redis来设置一个key,key映射对应的ip,然后每次ip访问后都给对应的key加一,假如小于10,就继续访问,相反拒绝访问,同时给这个key设置过期时间一分钟。
面试官继续问:假如我这个时间不是固定时间,而是一个时间轴,比如从10点到10点1分这算是一分钟,同样十点零一秒到十点一分零一秒也是一分钟(这里你深思一下,确实这样就满足不了了)
我思考半天回答:假如给这个redis 的key同时加一个时间戳,每次访问往前推60秒,然后计算这60的访问次数。,,,这样似乎也不行。。。
一点资讯、滴滴面试官就过去了
但是美图面试官给我了一个方法,虽然美图面试官和前两个公司面试官问的方式不一样,但是美图面试官给的方案我觉得是绝对可以的,答案就是:设置一个redis队列名,每次访问就往这个队列丢一个元素……
具体看看这个
https://www.cnblogs.com/wt645631686/p/6868845.html
Redis持久化方式,多了解一下,经常被追问到细节。(频率还行)
Redis分布式以及如何防止雪崩
PHP相关:
Php-fpm对进程管理的几种方式
php-fpm和fast cgi的关系
fast cgi 和cgi区别
Nginx和php怎么通信(详细了解一下)
详细说一下 从浏览器输入url相应的整个过程(不要想糊弄,被个别面试官追问道http握手,甚至php生命周期以及php内核、zend引擎四层的处理过程)(频率可以)
Nginx负载均衡的原理(频率较高,可能是因为我简历上写了配置过负载均衡…)
Php垃圾回收机制(频率较高)
Php设计模式,还会当场让你写代码,比如工厂模式、单例模式(频率可以)
Php哪些魔术方法
Mysql相关:
数据库如何恢复? 了解一下 redo log ,以及 redo log和binlog区别
Mysql 的事务隔离级别,以及默认哪个,以及脏读、幻读、重复度的原因(频率较高)
Mysql分布式事务 (频率较高)
乐观锁(这里会给你出题,考验乐观锁)
Mysql最左原则、sql 比如 联合索引 (abc),这里面试官会各种顺序转变来问你 (频率较高)
Explain 分析,会被问一些参数,甚至 是序号(频率较高)
mysql 执行过程
Mysql 聚簇索引和非聚簇索引的区别、innodb引擎中,主键索引为什么比唯一索引快(频率较高)
Mysql的优化你会考虑哪些?(频率较高) https://www.cnblogs.com/wt645631686/p/8193622.html 看看这篇文章最下面的图片
innodb 和myisam区别
索引的相关知识多了解了解
Mysql主从复制原理
Mysql主从延迟怎么解决?
*****mysql索引啊 什么B+树啊,排序啊,二叉树啥的,一定吃透******
接口优化及Nosql:
假如给你一个接口,你如何优化? 详细说说你的整个排查思路
Mongodb怎么优化?(傻逼易到用车问过我)
Elasticsearch 的原理(频率凑合)
Linux:
Linux命令
比如统计后多少条
比如awk、grep等等
杂七杂八:
进程线程携程区别(频率较高)
Post和get区别、cookie和session区别,以及如何实现分布式session(小公司问)
高并发的网站,你如何考虑做到高可用? (以前经常被问,现在面试偶尔被傻逼面试官问,比如易到用车傻逼面试官【看看极客时间的高并发40问吧】)
内存溢出与内存泄漏
http握手
Osi七层模型(这里会被问到http协议和udp协议相关问题,处于哪个层)
socket通信原理
Xss、sql注入、csrf安全问题
队列和堆得区别? 如何让堆实现队列?(华图问过我,极客学院算法课正巧看过一节。这里你可以了解一下)
建议:面试之前一定要把算法吃一遍,再就是mysql一些相关的东西,这两款知识频率非常高