【转载】【面试经验】PHP中级面试题
最流行的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的架构方案你都能搞定。
【转载】【面试经验】PHP中级面试题的更多相关文章
- 腾讯java面试经验 (含面试题解析)
本人5年开发经验.18年年底开始跑路找工作,在互联网寒冬下成功拿到阿里巴巴.今日头条.腾讯等公司offer,岗位是Java后端开发,因为发展原因最终选择去了腾讯,入职一年时间了,也成为了面试官,之 ...
- 我的美国(北美)计算机CS实习面试经验分享
过去的一年多里,参加了一些面试,虽然面过的公司不多,但都从头一直走到尾.毕竟自己也是花了大量的时间和精力在这一场场的面试里.所以,就絮叨下自己的一些经验,希望能给在美国找实习找工作的同学们提供一点点帮 ...
- Java面试总结(面试流程及核心面试题)
Java面试流程及核心面试题 面试整体流程 1.1 简单的自我介绍 我是xxxx,工作xxx年.我先后在xxxx公司.yyyy公司工作.先后做个xxxx项目.yyyy项目. 1.2 你简单介 ...
- BAT的面试经验_摘抄
一.心态 心态很重要! 心态很重要! 心态很重要! 重要的事情说三遍,这一点我觉得是必须放到前面来讲. 找工作之前,有一点你必须清楚,就是找工作是一件看缘分的事情,不是你很牛逼,你就一定能进你想进的公 ...
- BAT面试经验分享——iOS高级开发工程师的自我总结!
序言 目前形势,参加到iOS队伍的人是越来越多,甚至已经到供过于求了. 今年,找过工作人可能会更深刻地体会到今年的就业形势不容乐观,随着各大公司秋招的开始,很多小伙伴都行动起来了,我也有幸获得了一份不 ...
- 你不知道的腾讯社招面试经验(已offer)
# 你不知道的腾讯社招面试经验(已offer) ## 背景 最近一段时间换工作,成功获得了腾讯的offer.在这里有点经验跟大家分享,我觉得,比起具体的面试题,有些东西更加重要,你知道这些东西,再去准 ...
- 去BAT,你应该要看一看的面试经验总结(转)
来源微信公众号『easyserverdev』 http://mp.weixin.qq.com/s/UZljzFMjobo1wzCguY7NDg 说下我的面试经验吧,都是亲身经历,不喜勿喷: 我去年12 ...
- [转载]面试心得与总结---BAT、网易、蘑菇街等
转载自:http://mp.weixin.qq.com/s?__biz=MzIzMDIxNTQ3NA==&mid=2649111851&idx=1&sn=f43c42f7262 ...
- 两年Java的面试经验
前言:从过年前就萌生出要跳槽的想法,到过年来公司从3月初提出离职到23号正式离职,上班的时间也出去面试过几家公司,后来总觉的在职找工作总是得请假,便决心离职后找工作.到4月10号找到了一家互联网公司成 ...
- 去BAT,你应该要看一看的面试经验总结
我去年12月份从上一家公司离职,一直到今年3月份,基本上都在面试中度过来的. 先交代下背景:坐标上海,做技术开发,我本人面试的职位是linux服务器开发,最倾向的职位是服务器开发主程或技术经理.我本人 ...
随机推荐
- Nova 如何统计 OpenStack 资源
1.云计算的本质在于将硬件资源软件化,以达到快速按需交付的效果,最基本的计算.存储和网络基础元素并没有因此改变.就计算而言,CPU.RAM 和 DISK等依旧是必不可少的核心资源. 从源代码和数据库相 ...
- OpenStack-Ironic裸金属简介
一,Ironic简述 简而言之,OpenStack Ironic就是一个进行裸机部署安装的项目. 所谓裸机,就是指没有配置操作系统的计算机.从裸机到应用还需要进行以下操作: (1)硬盘RAID ...
- Vue2 全局过滤器(vue-cli)
先看官方简介: 当前组件注册: export default { data () { return {} }, filters:{ orderBy (){ // doSomething }, uppe ...
- dirname(__FILE__)
dirname() 函数返回路径中的目录部分. __FILE__ :被称为PHP魔术常量,返回当前执行PHP脚本的完整路径和文件名,包含一个绝对路径 dirname(__FILE__) 函数返回的是脚 ...
- $this和self、parent这三个关键词分别代表什么?在哪些场合下使用?
$this:当前对象 self: 当前类 parent: 当前类的父类 $this在当前类中使用,使用->调用属性和方法. self也在当前类中使用,不过需要使用::调用. 静态属性,不能在类里 ...
- EXTJS4.0 form 表单提交 后 回调函数 不响应的问题
在提交表单后,应返回一个 JSON 至少要包含{success:true} 否则,EXT 不知道是否成功,没有响应. {success:true,msg:'成功',Url:'http://www.ba ...
- 点对点协议(Point-to-Point Protocol)
简介 点对点协议简称PPP协议,工作在数据链路层.设计目的主要是用来通过拨号或专线方式建立点对点连接发送数据,使其成为各种主机. 网桥和路由器之间简单连接的一种共通的解决方案. PPP协议的组成 建立 ...
- Codeforces Round #516 (Div. 2)D. Labyrinth
D. Labyrinth 题目链接:https://codeforces.com/contest/1064/problem/D 题意: 给出一个n*m的矩阵以及人物的起点,并且给出x,y,分别代表这个 ...
- DP———2.最大m子序列和
Max Sum Plus Plus Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others ...
- 从串口驱动的移植看linux2.6内核中的驱动模型 platform device & platform driver【转】
转自:http://blog.csdn.net/bonnshore/article/details/7979705 写在前面的话: 博主新开了个人站点:你也可以在这里看到这篇文章,点击打开链接 本文是 ...