PHP常见面试问答

通过平时的积累,汇总大家的面试遇到的问题,尝试提供常见问题的解答

包含PHP,数据库,网络,Linux,数据结构等部分


常见知识点

一、PHP篇

01.echo、print、print_r、var_dump 区别 02.php array_merge和array+array的区别; 03.PHP数组函数 04.php5/php7数组底层如何实现? 05.单引号和双引号的区别 06.isset和empty的区别 07.static、self、$this的区别 08.include、require、include_once、require_once的区别 09.Cookie和Session区别,Session存储位置,共享、存活时间 10.魔术方法 11.public、protected、private、final区别 12.客户端/服务端IP获取,了解代理透传,实际IP的概念 13.类的静态调用和实例化调用 14.==与===区别 15.define()与const区别 16.php|传值与传引用的区别 17.PHP7与PHP5有什么区别 18.如何异步执行命令?fastcgi_finish_request方法 19.*yield是什么,核心原理是什么,说个使用场景 yield 20.Swoole 适用场景,协程实现方式 21.人人都要知道的PHP底层运行机制与工作原理? 22.php垃圾回收 23.php.ini/php-fpm.conf配置选项 24.BOM 头是什么,怎么除去 25.PHP 进程模型,进程通讯方式,进程线程区别 26.php | abstract与interface之间的区别 27.traits 与 interfaces 区别 及 traits 解决了什么痛点? 28.依赖注入(ioc)实现原理 29.Xhprof 、Xdebug 性能调试工具使用 30.Copy on write 原理,何时 GC? 31.如何给 PHP 增加一个扩展 32.php中的后期静态绑定 33.php反射

二、数据库篇

1.MySQL

1.mysqli,mysql,PDO的区别,以及pdo的prepare原理 2.MySQL各个存储引擎、及区别 3.什么是事务?事务的四个特性以及事务的隔离级别 4.分布式事务解决方案 5.怎样避免慢查询 6.索引类型 7.数据库主从复制M-S是怎么同步的?是推还是拉?会不会不同步?怎么办 8.数据库常见语句(UNION,CRUD,JOIN、LEFT JOIN 、RIGHT JOIN、INNER JOIN,GROUP BY + COUNT + WHERE 组合案例) 9常用 MySQL 函数,如:now()、md5()、concat()、uuid()等 10.1:11:nn:n 各自适用场景 11.了解触发器是什么,说个使用场景 12.数据库优化手段 12.1 索引、联合索引(命中条件) 12.2 分库分表(水平分表垂直分表) 12.3 分区 12.4 会使用 explain 分析 SQL 性能问题,了解各参数含义 重点理解 typerowskey 12.5 Slow Log(有什么用,什么时候需要) 13.为啥采用B+树,不采用红黑树等 14.什么是sql注入,怎么防止sql注入,xss和csrf 15、mysql执行过程

2.MSSQL(了解)

1 查询最新5条数据

3.NOSQL

0.redis常见面试问答*** 1.Redis缓存失效策略 2.Redis getbit,setbit和BITCOUNT用法理解 3.Redis为什么这么快 4.Redis Cluster 5.zset的实现 5.redis源码解读 6.68道Redis面试题 7.redis主从同步原理 8.Redisson基本原理 Redis、Memcached、MongoDB的对比 对比、适用场景(可从以下维度进行对比) 持久化 支持多钟数据类型 可利用 CPU 多核心 内存淘汰机制 集群 Cluster 支持 SQL 性能对比 支持事务 应用场景

4.ES

1.refresh_interval用法 主节点挂了怎么办?怎么再选 ES的倒排 详细描述一下Elasticsearch索引文档的过程?

三、数据结构/算法篇

数据结构

堆、栈特性 队列 哈希表 链表

算法部分

剑指OFFER 动态规划解法的套路 二叉树深度算法 二叉树子节点个数 回文串 链表是否有环 topK 快速排序(手写) 冒泡排序(手写) 二分查找(了解) 查找算法 KMP(了解) 深度、广度优先搜索(了解) LRU 缓存淘汰算法(了解,Memcached 采用该算法)

四、网络篇

输入一个url之后发生了什么 一文搞懂TCP与UDP的区别 tcp三次握手四次挥手,为啥多一次 HTTP keep-alive HTTP1.0,HTTP1.1和HTTP2.0区别 HTTP 与 HTTPS 区别 tcp滑动窗口协议 浅谈IO模型

五、服务器篇

1.查看 CPU、内存、时间、系统版本等信息 2.find 、grep 查找文件 3.awk 处理文本 4.查看命令所在目录 5.自己编译过 PHP 吗?如何打开 readline 功能 6.如何查看 PHP 进程的内存、CPU 占用 7.负载均衡有哪几种,挑一种你熟悉的说明其原理 8.如何保障数据的可用性,即使被删库了也能恢复到分钟级别。你会怎么做。 9.数据库连接过多,超过最大值,如何优化架构。从哪些方便处理? 10.502 大概什么什么原因? 如何排查 504呢? 11.如何排查网站比较慢? 12.supervisor用法详解? 13.用过ping吗?是什么协议?

六、架构篇

偏运维(了解): 负载均衡(Nginx、HAProxy、DNS) 主从复制(MySQL、Redis) 数据冗余、备份(MySQL增量、全量 原理) 监控检查(分存活、服务可用两个维度) MySQL、Redis、Memcached Proxy 、Cluster 目的、原理 分片 高可用集群 RAID 源代码编译、内存调优 缓存 工作中遇到哪里需要缓存,分别简述为什么 缓存雪崩、缓存穿透、缓存预热、缓存更新、缓存降级等问题 布隆过滤器 搜索解决方案 性能调优 各维度监控方案 日志收集集中处理方案 国际化 数据库设计 静态化方案 画出常见 PHP 应用架构图 分布式架构总结 一致性hash算法 Zookeeper 原理与优化 分布式一致性最佳实践-raft RabbitMQ核心概念以及工作原理 单点登陆

七、设计模式

*单例模式 *工厂模式 观察者模式(重点) 依赖注入(重点) 装饰器模式 代理模式 组合模式

八、安全篇

SQL 注入 XSS 与 CSRF 输入过滤 Cookie 安全 禁用 mysql_ 系函数 数据库存储用户密码时,应该是怎么做才安全 验证码 Session 问题 安全的 Session ID (让即使拦截后,也无法模拟使用) 目录权限安全 包含本地与远程文件 文件上传 PHP 脚本 eval 函数执行脚本 disable_functions 关闭高危函数 FPM 独立用户与组,给每个目录特定权限 了解 Hash 与 Encrypt 区别

其它

如何在不支持 DELETE 请求的浏览器上兼容 DELETE 请求 API 请求如何保证数据不被篡改? JSON 和 JSONP 的区别 数据加密和验签的区别 RSA 是什么 API 版本兼容怎么处理 限流(木桶、令牌桶) OAuth 2 主要用在哪些场景下 JWT PHP 中 json_encode(['key'=>123]);return json_encode([]); 区别,会产生什么问题?如何解决 写一个正则如何去匹配纯数字

版权声明:

1、该文章(资料)来源于互联网公开信息,我方只是对该内容做点评,所分享的下载地址为原作者公开地址。
2、网站不提供资料下载,如需下载请到原作者页面进行下载。
3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考学习用!
4、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。