【面试经验】PHP中级面试题
最流行的pHp MVC框架
.cn/software/show_resource.php?resource_id=742
Yii(音 易框架,我一般直接读YII) CodeIgniter(简读CI) Symfony CakepHp
MVC ,这个看百度就行,MVC在计算机界通用
/view/31.htm
如何提高pHp运行速度
/html/webkaifa/pHp/pHpyingyong/2012/0105/9616.html
这里提到了Zend Optimizer,一般这个都不太用,
Zend Cache、ApC和Afterburner Cache,这几种模块缓存,ApC是常用的,一般用它缓存include require的东西(开启apc功能后,这些自动的,即之后php运行到require的东西不会去读硬盘,而是读cache)。
压缩网页内容,是指内容类的网站,输出的html代码很多,开启gzip减少网络传输量,
代码层面的,代码复用,使用内部函数,算法好一些,逻辑简化,都能一定程度加速,
我补充一些:提高速度,本质的找到一个功能块的性能瓶颈,针对问题做特别的优化。
比如如果mysql读取量较大,根据使用频繁程度做cache,避免多次请求mysql,分担压力。cache可以使用本地文件cache,可以使用memcache redis以及一些nosql数据库(nosql的数据库一般都是key-value数据库)。
有一些很耗时的处理,可以考虑是否可以预处理,通过计划任务定时处理好存起来,使用时直接调用,而不用现计算。
还有一些耗时,但是此次请求并不直接关心结果的,可以考虑异步处理,比如把它丢给[消息队列],由另一个程序去执行相关操作,这样当前程序可以很快返回结果。
所有高并发的网站架构,都是要分布式的,即一个请求可能会由好多个机器共同分担完成,网站服务器分布,数据库分布,存储分布。
网站分布,为了增加不同地区用户访问速度,会将网站主机布到多种机房内,电信,联通,铁通,移动,海外等机房。访问的时候根据来源分配到相应的服务器上,一般同一种网络内的服务器是随机分配的,使用负载均衡器,来做调度,也可以使用DNS轮循的方式随机分配。问你负载均衡等实现细节可以不知道,提到这些词就可以了,有硬件专门做,也可以用程序来模拟实现。程序实现无非是写一个算法来随机分配。DNS轮循的要在DNS解析层做,这些是运维的事情。
网站分布了,资源请求是内部的,各机房之内通过服务器之间打通来实现高速访问,这是网络运维的事情。简单的做法是在服务器上采用双线或多线,即一台服务器有电信的Ip也有网通的Ip,这样不同的网络过来,请求不同的Ip地址,达到更高速访问的目的。
数据库分布,mysql提供主从(master-slave)的方式,即数据库有一个主服务器,可以有许多从服务器,slave从master同步数据,网站服务器请求时从slave来查询,减轻master压力。也可以按数据业务切分,将不同的数据放在不同的服务器上,这样也会减轻数据请求的压力(但同时要访问多台数据库服务器,又增加了一些开销)。mysql的主从同步原理是binlog,通过同步主服务器的操作命令过程,来实现在从服务器上重建数据。同时这种模式也实现了读写分离,写的时候在master上写,读的时候在slave上读。防止大并发时受写入速度影响读取速度。
存储分布,一些资源可以不必放在主网站上,比如js、css、图片,可以放到其它机器上,我们经常会发现一些大网站的图片,可能是img1、img2 img3、static、pic等域名开头的这些都是将这种资源分开的做法。同时这些静态资源,可以使用CDN来加速(CDN的全称是Content Delivery Network,即内容分发网络),CDN服务器可以自己建,也可以购买第三方服务。
版本管理,从CVS 到SVN
以及GIT,一般要会SVN,CVS是早期使用的,现在被SVN取代,新一代的GIT现在正在崛起。
代码版本管理软件的作用是,将代码保存在服务器上,通过更新,提交两种操作,来实现代码的最终修改,这样多人合作时方便。在版本发布时,打一个tag,就将代码定格在那一时刻。你可以继续开发你的,不会干扰那个tag。也可以开多个分支,这样可以由不同的人开发多种版本,可以1.0
2.0等版本同时开发,互不影响。开发完了,也可以版本合并。使用版本管理还有一个好处是,代码在服务器上,即使本机坏了,也不会影响大家工作成果。如果有人误操作,将代码毁了,也可以回滚。
关于这三种版本管理软件使用方法,自己百度。
HTTp协议
/zjusuyong/articles/304788.html
重点看一下状态码,200 304 403 404 500 502,其中304是服务器设置一个静态文件失效时间,在有效期内,浏览器接到服务器端返回304状态,不再从服务器传送文件,而使用浏览器缓存。这篇文章有时间要细读,这是整个web请求的根基。很多优化的本质都是围绕这个协议进行的。包括cookie是http协议的组成部分。
两种常见保持会话的手段cookie session的`区别
/shiyangxt/archive/2008/10/07/1305506.html
GET pOST两种http请求的区别
/hyddd/archive/2009/03/31/1426026.html
JSON 和 XML 这两种数据格式
/view/49800b83d4d8d15abe234e83
这两种数据格式,通常做为第三方请求数据的返回格式,也可以是服务器向前端返回数据的格式。自己的项目多用在AJAX请求返回。
关于AJAX
/ajax/
AJAX = 异步 JavaScript 和 XML,也可以使用Json来替代XML。
然后又涉及JavaScript的几个框架
/kent/articles/202855.html
主流使用的是 jQuery,它的普遍使用是因为它使用起来很简单,容易理解。
jQuery教程 /jquery/
Linux常用命令
cd ls cp rm mkdir ssh rsync wcp sudo
具体的命令不一定会考,但一定会问你会不会用linux,因为90%的互联网公司的web项目使用都是linux 或unix 做为服务器,而不是windows。
Mysql的几种存储(表)引擎
/art/201105/259232.htm
主流使用MyISAM InnoDB
InnoDB和Myisam区别
/view/2630add5b9f3f90f76c61b35
NoSQL数据库
/news/2011/01/nosql-why
/blog/524977
Redis、Tokyo Cabinet、MongoDB
Memcache也是NoSQL数据库,但是它并不是持久存储,只是放在内存中的cache,
memcache的用法
/qiantuwuliang/archive/2011/03/07/1974499.html
三大WEB服务器对比分析 apache、lighttpd、nginx
/view/96095c1f227916888486d7d2
全文搜索的几种工具 Coreseek、 Sphinx、 Lucene
pHp的三种运行方式
/anljf/article/details/7086034
apache模块方式、 CGI方式 、FastCGI方式
pHp开发程序应该注意的42个优化准则
/html/webkaifa/pHp/pHpyingyong/2012/0105/9617.html
关于pHp本身的面试题,直接百度,一般查到的都是围绕pHp语法的,
本文不敢称之为高级面试题,因为还没有涉及pHp扩展,pHp的源码实现等内容展开,
相关内容就写这么多,有一些东西的使用手册,实现原理,优化办法要自己去百度其它相关文章了,这里就不帮着归类了,
这些问题要是大家都掌握了,那么恭喜你已经是一名相对合格的pHp成手,常见web的架构方案你都能搞定。
转载于/39.html
版权声明:此文自动收集于网络,若有来源错误或者侵犯您的合法权益,您可通过邮箱与我们取得联系,我们将及时进行处理。
本文地址:https://www.gunzhua.com/jiuye/mianshi/191319.html