php面试题
php面试题整理
1.什么是面向对象?主要特征是什么?
1 | 面向对象是程序的一种设计方式,提高程序重用性,使程序结构更加清晰。 |
2.SESSION和COOKIE的区别是什么,请从协议和,产生的原因和作用说明?
1 | 1.协议方面:http无状态协议,不能区分用户是否从同一个网站上来的,同一个用户请求不同的页面不能看作是同一个用户。 |
3.HTTP协议中302、403、500状态码的含义?
1 | 一二三四五原则: |
4.LINUX建立压缩包,解压缩包的命令
1 | Tar.gz: |
5.请写出数据类型(int char varchar datetime text)的意思;请问 varchar 和 char有什么区别?();
1 | int:整形 |
6. MyISAM 和 InnoDB 的基本区别?索引结构如何实现?
1 | MyISAM类型不支持事务、表锁,易产生碎片化,要经常优化,读写速度较快。InnoDB类型支持事务,行锁,有崩溃恢复能力,读写速度比MyISAM慢。 |
7.isset()和empty()的区别
1 | isset()检测变量是否存在,可以传入多个变量,若其中一个不存在则返回假,empty()检测变量是否为空,只可传入一个变量,如果为空为假则返回真 |
8.如何在页面之间传递变量(至少两种方式)?
1 | GET,POST,COOKIE,SESSION,隐藏表单 |
9.请写出常见的排序算法?并用PHP实现冒泡排序,将数组$array = ()按照从小到大的方式进行排序。
1 | 常见的排序算法有:冒泡排序法、快速排序法、简单选择排序法、堆排序法、直接插入排序法、希尔排序法、合并排序法 |
10.请说明PHP中引用与传值的区别?什么时候用引用什么时候用传值?
1 | 传值:函数范围内对值的任意改变都会被函数外部所忽略 |
11.请简述一下数据库优化?
1 | 从结构层:web服务器采用负载均衡,mysql服务器采用主从复制,读写分离 |
12.如何解决异常处理?
1 | 抛出异常,使用try...catch,异常的代码放到try代码块,如果没有出发异常,代码继续执行,如果异常被触发,就会抛出一个异常.Catch代码块捕获异常,并创建一个包含异常的对象,$->getMessage(),输出异常的错误信息。 |
13.怎么保证促销商品不会超卖?
1 | 数据库锁,高并发时会对数据库的性能影响很大; |
14.商城秒杀的实现?
1 | 抢购、秒杀场景需要解决的主要问题有两个:高并发对数据库产生的压力、竞争状态下如何解决库存的正确减少 |
15.laravel框架有哪些特色?
1 | laravel框架的设计思想比较先进,非常适合应用各种开发模式,Laravel框架的最大特点和优秀之处就是集合了PHP比较新的特点,以及各种各样的设计模式,loc模式,依赖注入模式等 |
16.为什么使用Laravel框架,他有什么好处,为什么不用其他框架?
1 | 能快速开发功能,自带各种方便的服务,比如数据验证、队列、缓存、数据迁移、测试、artisan命令行等,还有强大的ORM |
17.写出一个能创建多级目录的PHP函数
1 | function makeDir($dirName , $auth){ |
18.MySql的索引有哪些?
1 | MySQL目前主要有的索引类型为:普通索引、唯一索引、主键索引、组合索引、全文索引。 |
19.php的八种变量类型
1 | int、bool、string、array、resource、null、float、object |
20.Redis支持五种数据类型:
1 | 分别是string 字符串(key=>value)、hash 哈希(key=>对象)、list 列表(队列)、set 集合()、zset有序集合 |
21.php中静态变量的和普通变量的区别
1 | 在普通变量之前加上static关键字就构成了静态变量,静态变量只会初始化一次,静态变量的声明不能用表达式,类似于static $a = 1+2这种;需要直接复制static $ = 1;作用域为局部作用域 |
22.为什么会产生跨域问题?
1 | 跨域问题来源于JavaScript的同源策略,即只有 协议+主机名+端口号(如存在)相同,则允许相互访问。也就是说JavaScript只能访问和操作自己域下的资源,不能访问和操作其他域下的资源。跨域问题是针对JS和ajax的,html本身没有跨域问题,比如a标签、script标签、甚至form标签 |
23.解决跨域问题方案
1 | 1.允许浏览器跨域访问 |
24.redis缓存穿透,缓存击穿,缓存雪崩原因+解决方案
1 | 没搞明白,可以参考一下:https://www.cnblogs.com/xichji/p/11286443.html |
25.git相关的面试题
26.linux相关的面试题
1 | 大概就是常用的linux命令 |