一、PHP 部分
1.函数内部 static 和 global 关键字的作用
static 是静态变量,在局部函数中存在且只初始化一次,使用过后再次使用会使用上次执行的结果; 作为计数,程序内部缓存,单
例模式中都有用到。
global 关键字,引用全局变量,wordpress 中大量用到,如面向过程开发。
static 静态方法,是类的成员方法,但不需要实例化类可直接使用
$GLOBAL 在函数内使用具有全局作用域的变量,如$GLOBAL['a']
2.子类重写父类的 protected 方法有什么限制?或者说有什么要遵守的规则?
用例子说明,以 Laravel 框架中的控制器作为说明
①final 修饰的类方法不可被子类重写
②PHP 是否重写父类方法只会根据方法名是否一致判断(5.3 以后重写父类方法参数个数必须一致)
③重写时访问级别只可以等于或者宽松于父类 不可提升访问级别
3.PHP 文件末尾是否应该加 ?> 结束符号,为什么?
主要防止 include,require 引用文件,把文件末尾可能的回车和空格等字符引用进来,还有一些函数必须在没有任何输出之
前调用,就会造成不是期望的结果。PHP 文件的编码不包含 BOM 的 UTF8. 这也是 PSR-2 中的规范:纯 PHP 代码文件必须省
略最后的 ?> 结束标签。
4.谈一谈 PHP 开源框架 CI,ThinkPHP,Laravel 的优缺点及选型依据
CI 非常轻量级,是一个简单的 MVC 框架,性能也很快。
ThinkPHP3.2 国内使用比较多,优点是文档非常多,各种问题解决方案比较多,缺点是代码不够规范,理念落后。
Laravel 是一个现代化的 PHP 开发框架,代码优雅,使用 composer 方式扩展功能,社区活跃,缺点是比较重,比较适合做
后台管理或者应用型 WEB 系统。
5.Memcache 和 Redis 的读写性能(qps)如何?两者优缺点?Redis 支持哪些数据类型?Redis 如何持久化?
读写性能:
memcache 更加快速,在读取性能上比 Redis 快,缺点是仅支持字符串。