最新消息:

那些不厌其烦的PHP面试题,你中枪了吗?

PHP shibanuanshuidai 130浏览 0评论

php7的优势和特点

更快了,内核的改变导致速度更快了。

增加标量类型和返回类型的声明。

错误变成异常了,可以捕获之前的致命导致脚本中断的error,现在可以捕获,可以运行。

AST(Abstract Syntax Tree,抽象语法树)在PHP编译过程作为一个中间件的角色,替换原来直接从解释器吐出opcode的方式,让解释器(parser)和编译器(compliler)解耦,可以减少一些Hack代码。同时,让实现更容易理解和可维护。

Native TLS(Native Thread local storage,原生线程本地存储)。

Int64支持,统一不同平台下的整型长度,字符串和文件上传都支持大于2GB。

foreach表现行为一致。

Zval的改变。

PHP数组的变化(HashTable和Zend Array)。

通过宏定义和内联函数(inline),让编译器提前完成部分工作。

php各个版本的区别

PHP5.2 以前:autoload, PDO 和 MySQLi, 类型约束 PHP5.2:JSON 支持 PHP5.3:弃用的功能,匿名函数,新增魔术方法,命名空间,后期静态绑定,Heredoc 和 Nowdoc, const, 三元运算符,Phar PHP5.4:Short Open Tag, 数组简写形式,Traits, 内置 Web 服务器,细节修改 PHP5.5:yield, list() 用于 foreach, 细节修改 PHP5.6: 常量增强,可变函数参数,命名空间增强 php7:变化太多,总结下就是性能提升了很多。

php接口,抽象类的却别

对接口的继承使用implements,抽象类使用extends。

接口中不可以声明变量,但可以声明类常量.抽象类中可以声明各种变量。

接口没有构造函数,抽象类可以有。

接口中的方法默认为public,抽象类中的方法可以用public,protected,private修饰。

个类可以继承多个接口,但只能继承一个抽象类。

php怎么实现多线程

pthread扩展可以支持真正的多线程,但是问题很多不建议使用。 还有一些变向的多线程使用方法: 比如通过fsockopen 启用一个新的请求之类的,这种方法只能搞的一些简单问题,不建议使用。业务复杂后不好控制。可以考虑swoole和workerman之类的多进程模型。

怎么提高php的执行效率

这是一个可大可小的话题 从客观的角度来说

开启opcache。

使用缓存 主观角度。

完全个人内功问题,对语言的掌握熟练程度,比如一些语法糖。

算法的时间复杂度空间复杂度。

数据库都用过哪些

常用的 mysql、sqlite、MongoDB、redis。

mysql引擎都有什么特点和区别

主要说常用的:

MyISAM: 不支持事务、也不支持外键,但其访问(读)速度快,对事务完整性没有要求。

InnoDB:用于事务处理应用程序,具有众多特性,包括ACID事务支持,提供行级锁。

Memory:说白了全在内存里面干。

MyISAM和InnoDB的区别相对很多,从内部实现到应用场景以及优化,不一一列举。

数据量过大的时候,怎么处理

也是一个可大可小的话题,点到为止 从数据库角度: 结合业务进行拆分,分区,分库,分布式数据库,分布式事物问题 从web角度: 负载均衡(7层4层) 缓存。

怎么优化sql

执行计划。

了解mysql特性 一种需求可以有多重写法,比如 not in 和not exist ,join 和in。

各种mysql日志的分析。

索引的类型和使用场景

从实现角度 聚簇索引,非聚簇索引。

从类型和功能 唯一索引,非唯一索引(普通索引),联合索引,全文索引,覆盖索引。

使用场景 加速查询,主要就是为了加快速查询效率,注意不要过多用索引,否则对表更新的效率有很大的影响,因为在操作表的时候要化大量时间花在创建索引中 ,比如一个字段在整个表里面就两个值,那么就没必要在这个字段上加索引。

联合索引的优缺点

条件顺序按找索引的顺序。

联合索引可以替代单一索引的场景。

怎么部署分布式,用在什么场景

自动化部署,A/B test 灰度发布。

场景。

单台服务器无法承受压力。

高性能,高可用。

分布式存储、分布式事务,分布式锁。

redis和mongoDB的区别和使用场景

mongodb是真正的数据库,适合mysql竞争的;而redis缓存数据库,不同的东西根据不同的特性选择应用。

lnmp的运行原理

首先,浏览器发送http request请求到服务器(Nginx),服务器响应并处理web请求,将一些静态资源(CSS,图片,视频等)保存服务器上,然后将php脚本通过接口传输协议(网关协议)PHP-FCGI(fast-cgi)传输给PHP-FPM(进程管理程序),PHP-FPM不做处理,然后PHP-FPM调用PHP解析器进程,PHP解析器解析php脚本信息。PHP解析器进程可以启动多个,进行并发执行。然后将解析后的脚本返回到PHP-FPM,PHP-FPM再通过fast-cgi的形式将脚本信息传送给Nginx.服务器再通过Http response的形式传送给浏览器。浏览器再进行解析与渲染然后进行呈现。

熟悉的框架都有什么区别,有哪些优势

大点的框架适合大项目,高内聚低耦合 yii2类的功能足够强大,小框架我称之为工具,ci类的

设计模式都应用到过哪些,具体怎么实现。

单例全局只初始化一次。

工厂固定的对象生成。

装饰着多种产品组合在一起,动态扩展。

代理这个好理解。

适配器本来是两孔插头我通过适配器做成可以插三孔的。

详细说下排序算法的时间复杂度和空间复杂度 * 插入 冒泡 选择。

时间O(n2) 空间O(1)

快速 O(n*log2n) O(log2n)~O(n)。

堆排序 O(n*log2n) O(1)。

希尔排序,我经验数减少的时候简单的排序算法,大数据的时候 快速排序。

nginx怎么实现的负载均衡?

upstream配置、原理就多了,简单的说轮训、权重等等。

描述之前项目中用到过的架构,有什么优势?

小项目 ci 简单快速 大项目 yii2 phalcon laravel 结构清晰,解耦程度更高。

给app提供接口,怎么保证稳定性和响应应速度。

稳定性

稳定性话题可大可小 比如高可用,也是提高稳定性。

响应速度 缓存,优化吧 具体问题具体分析。

说一个自己做过的,觉得最有技术含量的项目,应用到哪些技术。

这个问题真不好说,写php扩展算吗。其实可以解决实际问题的东西都是好东西,都代表你成功了。 做应用开发,很难衡量技术含量吧,因为都很低。 上学的时候把编译原理里面的算法用C语言都写了一遍,我觉得这个比现在干的技术含量还高。现在很多时候都是在用,考验技术含量的应该是怎么发现问题,然后怎么解决问题吧,毕竟我们不是搞科研。

还了解其他的开发语言并且做过项目么?

java、python、wpf。

redis存储数据的类型有哪些,都应用在什么场景?

类型:string set hash list。

场景 :有序集合、大数据排序、集合的交集,共同好友

PS:本文摘自夏彬童鞋

转载请注明:PHP学习 » 那些不厌其烦的PHP面试题,你中枪了吗?

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址