PHP面试题.docx
《PHP面试题.docx》由会员分享,可在线阅读,更多相关《PHP面试题.docx(22页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、PHP100 面试题1、PHP的意思?答:PHP是一个基于服务端来创建动态网站的脚本语言,您可以用PHP与HTML生成网站主页2、谈谈asp,php,jsp的优缺点?ASP全名Active Server Pages,是一个WEB服务器端的开发环境, 利用它可以产生与运行动态的、交互的、高性能的WEB服务应用程序。ASP采用脚本语言VB Script(Java script)作为自己的开发语言。 PHP是一种跨平台的服务器端的嵌入式脚本语言. 它大量地借用C,Java与Perl语言的语法, 并耦合PHP自己的特性,使WEB开发者能够快速地写出动态生成页面.它支持目前绝大多数数据库。还有一点,PH
2、P是完全免费的,不用花钱,你可以从PHP官方站点()自由下载。而且你可以不受限制地获得源码,甚至可以从中加进你自己需要的特色。 JSP 是Sun公司推出的新一代站点开发语言,他完全解决了目前ASP,PHP的一个通病脚本级执行(据说PHP4 也已经在Zend 的支持下,实现编译运行).Sun 公司借助自己在Java 上的不凡造诣,将Java 从Java 应用程序 与 Java Applet 之外,又有新的硕果,就是JspJava Server Page。Jsp 可以在Serverlet与JavaBean的支持下,完成功能强大的站点程序。 三者都提供在 HTML 代码中混合某种程序代码、由语言引擎
3、解释执行程序代码的能力。但JSP代码被编译成 Servlet 并由 Java 虚拟机解释执行,这种编译操作仅在对 JSP 页面的第一次请求时发生。在 ASP 、PHP、JSP 环境下,HTML 代码主要负责描述信息的显示样式,而程序代码则用来描述处理逻辑。普通的 HTML 页面只依赖于 Web 服务器,而 ASP 、PHP、JSP 页面需要附加的语言引擎分析与执行程序代码。程序代码的执行结果被重新嵌入到 HTML 代码中,然后一起发送给浏览器。 ASP 、PHP、 JSP三者都是面向 Web 服务器的技术,客户端浏览器不需要任何附加的软件支持。3、谈谈对mvc的认识?答:由模型(Model),
4、视图(View),控制器(Controller)完成的应用程序 由模型发出要实现的功能到控制器,控制器接收组织功能传递给视图;4、写出发贴数最多的十个人名字的SQL,利用下表:members(id,username,posts,pass,email)答:SELECT * FROM members ORDER BY posts DESC limit 0,10;5、GD库是做什么用的? 答:gd库提供了一系列用来处理图片的功能,使用GD库可以处理图片,或者生成图片。 在网站上GD库通常用来生成缩略图或者用来对图片加水印或者对网站数据生成报表。6、请写出数据类型(int char varchar d
5、atetime text)的意思; 请问varchar与char有什么别?答:int是数字类型,char固定长度字符串,varchar实际长度字符串,datetime日期时间型,text文本字符串 char的场地固定为创建表设置的长度,varchar为可变长度的字符7、写出以下程序的输出结果?$c?4:5; echo $a;?答:48、检测一个变量是否有设置的函数是?是否为空的函数是?答:isset($str),empty($str);9、取得查询结果集总数的函数是?答:mysql_num_rows($result);10、$arr = array(james, tom, symfony);
6、请打印出第一个元素的值?答:echo $arr0;11、PHP可以与sql server/oracle等数据库连接吗?答:可以12、请写出PHP5权限控制修饰符?答:public(公共),private(私用),protected(继承)13、请写出php5的构造函数与析构函数?构造函数:_construct析构函数:垃圾回收函数(_destruct)14、表单中 get及post提交方法的区别?get是发送请求HTTP协议通过url参数传递进行接收,而post是实体数据,可以通过表单提交大量信息(1)get是从服务器上获取数据,post是向服务器传送数据。(2)get是把参数数据队列加到提交
7、表单的action属性所指的url中,值与表单内各个字段一一对应,在url中可以看到。post是通过http post机制,将表单内各个字段及其内容放置在html header内,一起传送到action属性所指的url地址。用户看不到这个过程。(3)对于get方式,服务器端用Request.QueryString获取变量的值,对于post方式,服务器端用Request.Form获取提交的数据。(4)get传送的数据量较小,不能大于2KB。Post传送的数据量较大,默认是2M,这是为了避免对服务器用大量数据进行恶意攻击。可在php.ini中对post_max_size进行设置。(5)get安全性
8、非常低,post安全性较高。但是执行效率却比post方法好。(6)get是from的默认方法。15、session及cookie的区别?(1)从安全方面比较:Session保存在服务器端,客户端不知道其中的信息;cookie保存在客户端,服务器能够知道其中的信息。Cookie不是很安全,别人可以分析存放在本地的cookie并进行cookie欺骗,考虑到安全应当使用session。(2)从存取方式上比较:Session中保存的是对象,cookie中保存的是字符串。(3)是否区分路径上比较:Session不能区分路径,同一个用户在访问一个网站期间,所有的session在任何一个地方都可以访问到。而
9、cookie中如果设置了路径参数,那么同一个网站中不同路径下的cookie互相是访问不到的。(4)从工作方式上比较:Session需要借助cookie才能正常工作。如果客户端完全禁止cookie,session将失效。(5)从服务器性能方面比较:Session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能,考虑到减轻服务器性能方面,应当使用cookie。设置时间要及cookie配合使用:session_set_cookie_params=”;Setcookie(名,值,时间终结点(时间戳),路径,作用域)Setcookie(abc,123,mktime+3600*24,”/
10、”,);16、用PHP打印出前一天的时间格式是2010-7-3 12:28:21?答:echo date(Y-m-d H:i:s, strtotime(-1 days); 17、echo(),print(),print_r()的区别?答:echo是PHP语句, print与print_r是函数,语句没有返回值,函数可以有返回值(即便没有用) print() 只能打印出简单类型变量的值(如int,string) print_r() 可以打印出复杂类型变量的值(如数组,对象) echo 输出一个或者多个字符串18、能够使HTML与PHP分离开使用的模板?答:Smarty, TinyButStron
11、g,XTemplate, Savant,Template Lite, Dwoo, phemplate19、使用哪些工具进行版本控制?答:cvs,svn,vss;20、如何实现字符串翻转?答:echo strrev($a); /strrev - 颠倒字符串21、MYSQL取得当前时间的函数是?格式化日期的函数是?now(); date();22、对于大流量的网站,您采用什么样的方法来解决访问量问题?答:缓存(memcache高性能分布式缓存)、生成静态页面、提升服务器硬件性能,数据库读写分离(mysql_proxy),优化数据表、负载均衡及服务器集群、程序功能规则,禁止外部的盗链,控制大文件的下
12、载,使用不同主机分流主要流量23、用PHP写出显示客户端IP及服务器IP的代码?答:打印客户端IP:echo $_SERVERREMOTE_ADDR; 或者: getenv(REMOTE_ADDR);/getenv取得开发环境变量 打印服务器IP:echo gethostbyname();/ gethostbyname取得IP地址函数24、语句include与require的区别是什么?为避免多次包含同一文件,可用(?)语句代替它们? 答:require-require是无条件包含也就是如果一个流程里加入require,无论条件成立及否都会先执行require include-include有
13、返回值,而require没有(可能因为如此require的速度比include快) 注意:包含文件不存在或者语法错误的时候require是致命的,include不是25、如何修改SESSION的生存时间?.答: 方法2:$savePath = ./session_save_dir/; $lifeTime = 小时 * 秒; session_save_path($savePath); session_set_cookie_params($lifeTime); session_start(); 方法3:setcookie() and session_set_cookie_params($lifeT
14、ime); 26、有一个网页地址, 比如PHP开发资源网主页: ,如何得到它的内容?答:方法1(对于PHP5及更高版本): $readcontents = fopen( rb); $contents = stream_get_contents($readcontents);/ stream_get_contents取得字符串赋值给$contents fclose($readcontents); echo $contents; 方法2:echo ( / () 函数把整个文件读入一个字符串中。27、在HTTP 1.0中,状态码401的含义是(?);如果返回“找不到文件”的提示,则可用 header
15、 函数,其语句为?答:状态401代表未被授权,header(Location:);28、在PHP中,heredoc是一种特殊的字符串,它的结束标志必须?答:heredoc的语法是用加上自己定义成对的标签,在标签范围內的文字视为一个字串 例子: $str = test; $object-test = info;33、mysql_fetch_row() 与mysql_fetch_array之间有什么区别?答:mysql_fetch_row是从结果集取出1行数组,作为枚举 mysql_fetch_array是从结果集取出一行数组作为关联数组,或数字数组,两者兼得34、下面哪个函数可以打开一个文件,以
16、对文件进行读与写操作?(a) fget() (b) () (c) fopen() (d) open_file()答:c35、下面的程序会输入是否?否,局部变量 36、JS表单弹出对话框函数是?获得输入焦点函数是? 答:弹出对话框: alert()警告框,prompt()会话框,confirm()疑问框 获得输入焦点 focus()37、JS的转向函数是?怎么引入一个外部JS文件?答:window.location.href; 39、$a = abcdef; 请取出$a的值并打印出第一个字母?答:echo $a0 或 echo substr($a,0,1)38、优化MYSQL数据库的方法。 (1
17、)选取最适用的字段属性,尽可能减少定义字段长度,尽量把字段设置NOT NULL,例如省份,性别,最好设置为ENUM(2)使用连接(JOIN)来代替子查询: a.删除没有任何订单客户:DELETE FROM customerinfo WHERE customerid NOT in(SELECT customerid FROM orderinfo) b.提取所有没有订单客户:SELECT FROM customerinfo WHERE customerid NOT in(SELECT customerid FROM orderinfo) WHERE orderinfo.customerid IS
18、NULL(3)使用联合(UNION)来代替手动创建的临时表 a.创建临时表:SELECT name FROM nametest UNION SELECT username FROM nametest2(4)事务处理: a.保证数据完整性,例如添加与修改同时,两者成立则都执行,一者失败都失败 mysql_query(BEGIN); mysql_query(INSERT INTO customerinfo (name) VALUES ($name1); mysql_query(SELECT * FROM orderinfo where customerid=.$id); mysql_query(C
19、OMMIT);(5)锁定表,优化事务处理: a.我们用一个 SELECT 语句取出初始数据,通过一些计算,用 UPDATE 语句将新值更新到表中。包含有 WRITE 关键字的 LOCK TABLE 语句可以保证在 UNLOCK TABLES 命令被执行之前,不会有其它的访问来对 inventory 进行插入、更新或者删除的操作 mysql_query(LOCK TABLE customerinfo READ, orderinfo WRITE); mysql_query(SELECT customerid FROM customerinfo where id=.$id); mysql_query
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- PHP 试题
限制150内