By chajian8.com - Last updated: 2012/05/24 21:13:12 - 17 views - Posted in PHP, 职场/生活/面试 - Tags: PHP面试题 - Leave a Comment

最流行的PHP MVC框架

http://yp.oss.org.cn/software/show_resource.php?resource_id=742

Yii(音 易框架,我一般直接读YII) CodeIgniter(简读CI) Symfony CakePHP

MVC ,这个看百度就行,MVC在计算机界通用

http://baike.baidu.com/view/31.htm

如何提高PHP运行速度

http://www.php100.com/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协议

http://www.blogjava.net/zjusuyong/articles/304788.html

重点看一下状态码,200 304 403 404 500
502,其中304是服务器设置一个静态文件失效时间,在有效期内,浏览器接到服务器端返回304状态,不再从服务器传送文件,而使用浏览器缓存。这篇文
章有时间要细读,这是整个web请求的根基。很多优化的本质都是围绕这个协议进行的。包括cookie是http协议的组成部分。

两种常见保持会话的手段cookie session的区别

http://www.cnblogs.com/shiyangxt/archive/2008/10/07/1305506.html

GET POST两种http请求的区别

http://www.cnblogs.com/hyddd/archive/2009/03/31/1426026.html

JSON 和 XML 这两种数据格式

http://wenku.baidu.com/view/49800b83d4d8d15abe234e83.html

这两种数据格式,通常做为第三方请求数据的返回格式,也可以是服务器向前端返回数据的格式。自己的项目多用在AJAX请求返回。

关于AJAX

http://www.w3school.com.cn/ajax/

AJAX = 异步 JavaScript 和 XML,也可以使用Json来替代XML。

然后又涉及JavaScript的几个框架

http://www.blogjava.net/kent/articles/202855.html

主流使用的是 jQuery,它的普遍使用是因为它使用起来很简单,容易理解。

jQuery教程 http://www.w3school.com.cn/jquery/

Linux常用命令

cd ls cp rm mkdir ssh rsync wcp sudo

具体的命令不一定会考,但一定会问你会不会用linux,因为90%的互联网公司的web项目使用都是linux 或unix
做为服务器,而不是windows。

Mysql的几种存储(表)引擎

http://database.51cto.com/art/201105/259232.htm

主流使用MyISAM InnoDB

InnoDB和Myisam区别

http://wenku.baidu.com/view/2630add5b9f3f90f76c61b35.html

NoSQL数据库

http://www.infoq.com/cn/news/2011/01/nosql-why

http://robbin.iteye.com/blog/524977

Redis、Tokyo Cabinet、MongoDB

Memcache也是NoSQL数据库,但是它并不是持久存储,只是放在内存中的cache,

memcache的用法

http://www.cnblogs.com/qiantuwuliang/archive/2011/03/07/1974499.html

三大WEB服务器对比分析 apache、lighttpd、nginx

http://wenku.baidu.com/view/96095c1f227916888486d7d2.html

全文搜索的几种工具 Coreseek、 Sphinx、 Lucene

PHP的三种运行方式

http://blog.csdn.net/anljf/article/details/7086034

apache模块方式、 CGI方式 、FastCGI方式

PHP开发程序应该注意的42个优化准则

http://www.php100.com/html/webkaifa/PHP/PHPyingyong/2012/0105/9617.html

关于PHP本身的面试题,直接百度,一般查到的都是围绕PHP语法的,
本文不敢称之为高级面试题,因为还没有涉及PHP扩展,PHP的源码实现等内容展开,
相关内容就写这么多,有一些东西的使用手册,实现原理,优化办法要自己去百度其它相关文章了,这里就不帮着归类了,
这些问题要是大家都掌握了,那么恭喜你已经是一名相对合格的PHP成手,常见web的架构方案你都能搞定。

转载于http://www.chajian8.com/39.html

【转载】【面试经验】PHP中级面试题的更多相关文章

  1. 腾讯java面试经验 (含面试题解析)

      本人5年开发经验.18年年底开始跑路找工作,在互联网寒冬下成功拿到阿里巴巴.今日头条.腾讯等公司offer,岗位是Java后端开发,因为发展原因最终选择去了腾讯,入职一年时间了,也成为了面试官,之 ...

  2. 我的美国(北美)计算机CS实习面试经验分享

    过去的一年多里,参加了一些面试,虽然面过的公司不多,但都从头一直走到尾.毕竟自己也是花了大量的时间和精力在这一场场的面试里.所以,就絮叨下自己的一些经验,希望能给在美国找实习找工作的同学们提供一点点帮 ...

  3. Java面试总结(面试流程及核心面试题)

    Java面试流程及核心面试题 面试整体流程 1.1 简单的自我介绍      我是xxxx,工作xxx年.我先后在xxxx公司.yyyy公司工作.先后做个xxxx项目.yyyy项目. 1.2 你简单介 ...

  4. BAT的面试经验_摘抄

    一.心态 心态很重要! 心态很重要! 心态很重要! 重要的事情说三遍,这一点我觉得是必须放到前面来讲. 找工作之前,有一点你必须清楚,就是找工作是一件看缘分的事情,不是你很牛逼,你就一定能进你想进的公 ...

  5. BAT面试经验分享——iOS高级开发工程师的自我总结!

    序言 目前形势,参加到iOS队伍的人是越来越多,甚至已经到供过于求了. 今年,找过工作人可能会更深刻地体会到今年的就业形势不容乐观,随着各大公司秋招的开始,很多小伙伴都行动起来了,我也有幸获得了一份不 ...

  6. 你不知道的腾讯社招面试经验(已offer)

    # 你不知道的腾讯社招面试经验(已offer) ## 背景 最近一段时间换工作,成功获得了腾讯的offer.在这里有点经验跟大家分享,我觉得,比起具体的面试题,有些东西更加重要,你知道这些东西,再去准 ...

  7. 去BAT,你应该要看一看的面试经验总结(转)

    来源微信公众号『easyserverdev』 http://mp.weixin.qq.com/s/UZljzFMjobo1wzCguY7NDg 说下我的面试经验吧,都是亲身经历,不喜勿喷: 我去年12 ...

  8. [转载]面试心得与总结---BAT、网易、蘑菇街等

    转载自:http://mp.weixin.qq.com/s?__biz=MzIzMDIxNTQ3NA==&mid=2649111851&idx=1&sn=f43c42f7262 ...

  9. 两年Java的面试经验

    前言:从过年前就萌生出要跳槽的想法,到过年来公司从3月初提出离职到23号正式离职,上班的时间也出去面试过几家公司,后来总觉的在职找工作总是得请假,便决心离职后找工作.到4月10号找到了一家互联网公司成 ...

  10. 去BAT,你应该要看一看的面试经验总结

    我去年12月份从上一家公司离职,一直到今年3月份,基本上都在面试中度过来的. 先交代下背景:坐标上海,做技术开发,我本人面试的职位是linux服务器开发,最倾向的职位是服务器开发主程或技术经理.我本人 ...

随机推荐

  1. Node rescue/unrescue相关代码流程图

  2. 大图轮播js

    <!DOCTYPE html><html> <head>        <meta charset="UTF-8">         ...

  3. ASP.NET——视频总结

    ASP.NET的视频很早就看完了,但一直还没顾上总结.虽然在备战软考,学习任务很重,但是阶段的总结还是不要推太久了,不然也就起不到总结的效果了.在看视频之前,虽然已经做过了新闻发布系统,但是对B/S一 ...

  4. 为什么js获取图片高度的值 都为0

    尼玛 这个问题困扰我好久~ 看别人取值都是 img.width 我取到的总是0: 终于发现取图片尺寸的时候 图片还没有加载完毕.所以在 <img id ='sImg' class='thumbI ...

  5. Redux & React & react-redux

    Redux Redux & React & react-redux https://redux.js.org/ https://redux.js.org/api https://red ...

  6. 关于ECDSA/ECC(密钥加密传输)和ECDSA/ECDH(密钥磋商)

    关于ECDSA/ECC(密钥加密传输)和ECDSA/ECDH(密钥磋商) 来源: https://blog.csdn.net/xueyepiaoling/article/details/6243337 ...

  7. ROS内usb_cam包使用注意事项

    1.查看摄像头支持的pixel-format: 方法:  v4l2-ctl --list-formats-ext -d /dev/video0

  8. java rsa 解密报:javax.crypto.BadPaddingException: Decryption error

    Exception in thread "main" javax.crypto.BadPaddingException: Decryption error    at sun.se ...

  9. HBase基本数据操作详解【完整版,绝对精品】

    欢迎转载,请注明来源: http://blog.csdn.net/u010967382/article/details/37878701 概述 对于建表,和RDBMS类似,HBase也有namespa ...

  10. 行为型设计模式之访问者模式(Visitor)

    结构 意图 表示一个作用于某对象结构中的各元素的操作.它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作. 适用性 一个对象结构包含很多类对象,它们有不同的接口,而你想对这些对象实施一些依 ...