php开发面试题---1、php常用面试题一(PHP有哪些特性)
一、总结
一句话总结:
①.混合语法:php独特混合了C,Java,Prel以及PHP自创的语法.
②.为动态网页而生:可以比CGI或者Prel更快速去执行动态网页,与其他变成语言相比,PHP是讲程序嵌入到HTML文档中去执行,执行效率比完全生成HTML编辑的CGI要高很多,所有的CGI都能实现.
③.数据库和操作系统支持广泛:支持几乎所有流行的数据库以及操作系统.
④.c语言系列扩展:PHP可以使用C,C++进行程序的扩展.
1、nginx使用哪种网络协议?
http:nginx是应用层,我觉得从下往上的话,传输层用的是tcp/ip,应用层用的是http,fastcgi负责调度进程!
2、eho(),print(),print_r()的区别?
是否有返回值,是否可以打印数组
echo是语言结构,无返回值;
print功能和echo基本相同,不同的是print是函数,有返回值;
print_r是递归打印,用于输出数组对象。
3、对于大流量的网站,采用什么样的方法来解决访问量问题?
①.缓存:有效使用缓存,增加缓存命中率.
②.服务器结构:使用负载均衡.
③.CDN:对静态文件使用CDN进行存储和加速.
④.减少数据库使用:想法减少数据库的使用.
4、谈谈asp,php,jsp的优缺点?
服务器依赖:asp是需要依赖IIS,是微软开发的语言,php和jsp可以依赖apache或者 nginx等其他服务器
安全性:
运行速度:比如是否是多线程
5、简述三种屏蔽php程序的notice警告的方法?
文件开始设置错误级别:
修改php.ini 设置error_reporting set_error_handler:
@抑制错误:
答:初始化变量,文件开始设置错误级别或者修改php.ini 设置error_reporting set_error_handler 和 @抑制错误:
①在程序中添加:error_reporting (E_ALL & ~E_NOTICE);
②.或者修改php.ini中的:error_reporting = E_ALL 改为:error_reporting = E_ALL & ~E_NOTICE
③.error_reporting(0);或者修改php.inidisplay_errors=Off
6、如何从一个标准 url 里取出文件的扩展名(比如:http://www.sina.com.cn/abc/de/fg.php?id=1 需要取出 php 或 .php)?
使用系统函数:parse_url转化url为url信息的数组
function getExt($url){ $arr=parse_url($url);//var_dump得到array(4) { ["scheme"]=> string(4) "http" ["host"]=> string(15) "www.sina.com.cn" ["path"]=> string(14) "/abc/de/fg //.php" ["query"]=> string(4) "id=1" } $dir=basename($arr['path']); $ext=explode(".",$dir); echo $ext[1]; } $s="http://www.sina.com.cn/abc/de/fg.php?id=1"; getExt($s);
7、php如何遍历一个文件夹下的所有文件和子文件夹?
打开文件夹句柄:opendir():if(@$handle = opendir($dir)) { //注意这里要加一个@,不然会有warning错误提示:)
排除根目录:if($file != ".." && $file != ".") {
判断是否是子文件夹,是子文件夹就递归:is_dir():if(is_dir($dir."/".$file)) {
<?php function my_dir($dir) { $files = array(); if(@$handle = opendir($dir)) { //注意这里要加一个@,不然会有warning错误提示:) while(($file = readdir($handle)) !== false) { if($file != ".." && $file != ".") { //排除根目录; if(is_dir($dir."/".$file)) { //如果是子文件夹,就进行递归 $files[$file] = my_dir($dir."/".$file); } else { //不然就将文件的名字存入数组; $files[] = $file; } } } closedir($handle); return $files; } } echo "<pre>"; print_r(my_dir(".")); echo "</pre>";
二、ASPJSPPHP相比各有什么优缺点(百度)
参考:ASPJSPPHP相比各有什么优缺点?_百度知道
https://zhidao.baidu.com/question/7157295.html
php优点
1. 跨平台,性能优越,跟Linux/Unix结合别跟Windows结合性能强45%,并且和很多免费的平台结合非常省钱,比如LAMP(Linux
/Apache/Mysql/PHP)或者FAMP(FreeBSD/Apache/Mysql/PHP)结合,或者数据应用够大可以考虑换
PostgreSQL或者Oracle,支持N种数据库。(N >= 10)
2. 语法简单,如果有学习C和Perl的很容易上手,并且跟ASP有部分类似。有成熟的开发工具,比如NuPHPed,或者Zend
Studio等等,再Linux平台下可以使用Eclipse等等。
3. 目前主流技术都支持,比如WebService、Ajax、XML等等,足够应用。
4. 有比较完整的支持,比如使用ADODB或者PEAR::DB做数据库抽象层,用Smarty或者smart template做模板层,如果是PHP
5.1的话,还能够使用PDO(PHP Data Object)来访问数据库。
5. 有很多成熟的框架,比如支持MVC的框架:phpMVC,支持类似ASP.net的事件驱动的框架:Prado,支持类似Ruby On
Rails的快速开发的框架:Cake等等,足够满足你的应用需求。
6. PHP 5已经有成熟的面向对象体系,能够适应基本的面向对象要求。适合开发大型项目。
7. 有成熟的社区来支持PHP的开发。
8.目前已经很多大型应用都是使用PHP,比如淘宝网、Yahoo、163、Sina等等大型门户,很多选用PHP来作为他们的开发语言,所以大型门户都能够选用它,我想足够能够你的使用了。
9. 有很多开源的框架或开源的系统可以使用,比如比较知名的开源框架有Zend
Framework、CakePHP、CodeIgniter、symfony等,开源论坛有Discuz!、Phpwind等,开源博客
WordPress,开源网店系统如Ecshop、ShopEx等,开源的SNS系统如UCHome、ThinkSNS等。
php缺点
1.对多线程支持不太好,大多数时候我们只能简单的模拟去实现的。
2.语法不太严谨,比如变量不需要定义就可以使用,在c,java,c++中变量是必须先定义以后才可以使用的。
3.也许有经验的PHP程序员最感到痛苦的地方是PHP的解释运行机制。这种运行机制使得每个PHP页面被解释执行后,所有的相关资源都会被回收。也就是说,PHP在语言级别上没有办法让某个对象常驻内存。在PHP中,所有的变量都是页面级的,无论是全局变量,还是类的静态成员,都会在页面执行完毕后被清空。以JSP为例,在JSP中,Java
Bean的scope有四种有效值:Page、Application、Session、Request,分别对应页面、程序、会话、请求四种生存期。但在PHP中,只有Page一种生存期。
JSP的优势
(1)一次编写,到处运行。在这一点上Java比PHP更出色,除了系统之外,代码不用做任何更改。
(2)系统的多平台支持。基本上可以在所有平台上的任意环境中开发,在任意环境中进行系统部署,在任意环境中扩展。相比ASP/PHP的局限性是显而易见的。
(3)强大的可伸缩性。从只有一个小的Jar文件就可以运行Servlet/JSP,到由多台服务器进行集群和负载均衡,到多台Application进行事务处理,消息处理,一台服务器到无数台服务器,Java显示了一个巨大的生命力。
(4)多样化和功能强大的开发工具支持。这一点与ASP很像,Java已经有了许多非常优秀的开发工具,而且许多可以免费得到,并且其中许多已经可以顺利的运行于多种平台之下。
JSP的劣势
(1) 与ASP一样,Java的一些优势正是它致命的问题所在。正是由于为了跨平台的功能,为了极度的伸缩能力,所以极大的增加了产品的复杂性。
(2)
Java的运行速度是用class常驻内存来完成的,所以它在一些情况下所使用的内存比起用户数量来说确实是“最低性能价格比”了。从另一方面,它还需要硬盘空间来储存一系列的。java文件和。class文件,以及对应的版本文件。
ASP的特点:
1、任何开发工具皆可发展ASP
只要使用一般的文书编辑程序,如Windows记事本,就可以编辑。当然,其他网页发展工具,例如,FrontPage Express、
FrontPage等也都可以;不过还是建议你用记事本来写,既省钱又方便,若是使用那些所见即所得的网页编辑来写ASP,可能会发生一些意想不到的离奇状态。
2、通吃各家浏览器
由于ASP程序是在网络服务器端中执行,执行结果所产生的HTML文件适用于不同的浏览器。
3、语言相容性高
ASP与所有的ActiveX Script语言都相容,除了可结合HTML,VBScript、Java Script、Active
X服务器组件来设计外,并可经由“plug-In(外挂组件模组)的方式,使用其他厂商(Third Party)所提供的语言。
4、隐密安全性高
如果我们在浏览器中直接查看网页的原始代码,就只能看到HTML文件,原始的ASP程序代码是看不到的!这是因为ASP程序先于网站服务(Web
Server)端执行后,将结果转换成标准HTML文件,再传送到客户端(Client)的浏览器上,因此,我们所辛苦撰写的ASP程序并不会轻易地被看见进而被盗用。
5、易于操控数据库
ASP可以轻易地通过ODBC(Open Database
Connectivity)驱动程序连接各种不同的数据库,例如:Acess、Foxpro、dBase、Oracle等等,另外,ASP亦可将“文本文件”或是”Excel”
文件当成数据库用。
6、面向对象学习容易
ASP具备有面向对象(Object-Oriented)功能,学习容易,ASP提供了五种方便能力强大的内建对象:Request、Response、Sever、Application以及Session,同时,若使用ASP内建的“Application”对象或”Session”对象所撰写出来的ASP程序可以在多个网页之间暂时保存必要的信息。