2020年遇到的一些php面试题

1. 什么是面向对象?主要特征是什么?

面向对象是程序的一种设计方式,它利于提高程序的重用性,使程序结构更加清晰。
主要特征:封装、继承、多态。

2. Session和Cookie的区别是什么?请从协议、产生的原因与作用说明。

HTTP是无状态协议,每次请求都是相互独立、毫无关联的,协议不要求客户端或服务器记录相关请求的信息。
Session记录再服务器,Cookie记录再客户端。
Session比较安全,Cookie用某些手段可以修改。
Session是依赖于Cookie来传递。

3. MyISAM与InnoDB的基本区别是什么?索引是什么?

MyISAM不支持事务、表锁;易产生碎片,要经常优化;读写速度快。
InnoDB支持事务、行锁;有崩溃恢复能力;读写速度比MyISAM慢。
索引类似大学图书馆建书目索引,可以提高数据检索的效率,降低数据库的IO成本。

4. isset()与empty()的区别是什么?

isset是判断变量是否存在,可以传入多个变量,若其中一个变量不存在则返回false。
empty是判断变量是否为空、false、0等,是则返回true,否则返回false,只能传入一个变量。

5. 请说明PHP中传值和传引用的区别,分别再什么情况使用比较合适?

传值:函数范围内对值的改变不会影响到函数外的值。
传引用:函数范围内对值的改变会影响到函数外的值。
优缺点:传值需要复制值,对于大型字符串或对象,这将会是一个代价很大的操作,会造成占用过多的内存。传引用则不需要复制值,对性能提高很有好处。

6. PHP如何实现自动加载类?

__autoload() 函数也能自动加载类和接口,但更建议使用spl_autoload_register() 函数。

7. php读取文件内容的几种方法和函数?

fopen();fread();
file_get_contents();//打开读取一次完成

8. 你所知道的设计模式有哪些?挑一两个说明。

工厂模式、策略模式、单例模式。

9. echo(),print(),print_r()的区别?

echo和print是PHP语句, print_r是函数。
echo只能打印简单类型变量的值(如int,string),可以连续打印多个,使用逗号间隔,无返回值。
print只能打印一个简单类型变量的值(如int,string),有返回值1。
print_r()可以打印出复杂类型变量的值(如数组,对象)。

10. 数据库索引有几类,分别是什么?什么时候该用索引?

普通索引、主键索引、唯一索引。
并非所有的数据库都以相同的方式使用索引,作为通用规则,只有当经常查询列中的数据时才需要在表上创建索引。

11. PHP字符串中单引号与双引号的区别?

单引号不能解释变量,而双引号可以解释变量。
单引号不能转义字符,在双引号中可以转义字符。

12. 模板引擎的目的是什么? 你用过哪些模板引擎?

模板引擎是为了使用户界面与业务数据(内容)分离而产生的,它可以生成特定格式的文档,用于网站的模板引擎就会生成一个标准的HTML文档。
使用过laravel的Blade模版引擎。

13. 如何防止SQL注入?
  1. 开启配置文件中的magic_quotes_gpc和magic_quotes_runtime设置
  2. 执行sql语句时使用addslashes进行sql语句转换
  3. Sql语句书写尽量不要省略小引号和单引号
  4. 过滤掉sql语句中的一些关键字:update、insert、delete、select、*
  5. 提高数据库表和字段的命名技巧,对一些重要的字段根据程序的特点命名,取不易被猜到的。
  6. Php配置文件中设置register_globals为off,关闭全局变量注册
  7. 控制错误信息,不要再浏览器上输出错误信息,将错误信息写到日志文件中。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值