1、PHP程序员面试题(90%面试笔试)(待续.) 2011-10-07 15:34:41| 分类: PHP|字号 订阅1、PHP的意思,它能干些什么? 答:PHP是一个基于服务端来创建动态网站的脚本语言,您可以用PHP和HTML 生成网站主页,英文的全称(Professional Home Pages) 1、WEB开发、实现订单、网络通信、在线支付、一切互联网可以实现的工作。2、脚本的开发,Shell 脚本、 windows的计划任务等3、软件的开发,PHP-GTK等第三方的软件,使用php语法配合其他的语言开发软件2、谈谈对mvc的认识? 答:由模型(Model), 视图(View),控制器(
2、Controller)完成的应用程序由模型发出要实现的功能到控制器,控制器接收组织功能传递给视图;参考PHP100视频教程43、44、75、76、77讲3、GD库是做什么用的? 答:GD库提供了一系列用来处理图片的功能,使用 GD库可以处理图片,或者生成图片。 在网站上GD库通常用来生成缩略图或者用来对图片加水印或者对网站数据生成报表。现在常用的GD2功能更强大,可以实现对gif、png图片的处理4、数据类型(int char varchar datetime text)的意思;请问 varchar和char有什么别? 答:int是数字类型,char 固定长度字符串,varchar实际长度字符
3、串,datetime日期时间型,text文本字符串 ,char 的场地固定为创建表设置的长度,varchar 为可变长度的字符5、表单中 get与post提交方法的区别?答:get是发送请求HTTP协议通过url 参数传递进行接收而post 是实体数据, 可以通过表单提交大量信息. 6、session与cookie的区别?答:session:储存用户访问的全局唯一变量, 存储在服务器上的php指定的目录中的一般用于后台和安全性比较高的地方。cookie:是存储在客户端,对于Cookie来说是存储在用户浏览器下面的,一般用户登陆,负载压力比较大的地方。可以减轻服务器的负载。 7、echo(),p
4、rint(),print_r() 的区别? 答:echo 是PHP语句, print和 print_r是函数, 语句没有返回值,函数可以有返回值print() 只能打印出简单类型变量的值(如int,string) print_r() 可以打印出复杂类型变量的值(如数组,对象) Echo 输出一个或者多个字符串8、什么是模板技术、能够使HTML和PHP分离开使用的模板? 答:模板技术就是使PHP和HTML、CSS、JS 分离,实现更加合理和代码的部署Smarty ,XTemplate, Template Lite, Easy Template9、使用哪些工具进行版本控制?答:Cvs 、 Svn
5、、Vss 参考PHP100视频教程94、95讲10、对于大流量的网站,您采用什么样的方法来解决访问量问题? 答:确认服务器硬件是否足够支持当前的流量, 数据库读写分离 ,优化数据表,程序功能规则,禁止外部的盗链 ,控制大文件的下载,使用不同主机分流主要流量1、PHP程序上可以使用生成静态文件实现服务数据库压力2、使用PHP缓存技术、或第三方的mamcached 等缓存技术实现服务器压力参考PHP100视频教程samrty缓存技术、mamcached缓存用法11、include和require的区别是什么? 为避免多次包含同一文件可用什么代替它们? 答:包含文件不存在或者语法错误的时候requi
6、re 是致命的 ,include不是require需要放在头部预先载入,而include放在文件的任何位置随时载入还有一对扩展函数:require_once() include_once() 12、mysql_fetch_row() 和mysql_fetch_array 之间有什么区别? 答:mysql_fetch_row 是从结果集取出1行数组,作为枚举mysql_fetch_array 是从结果集取出一行数组作为关联数组, 或数字数组,两者兼得13.请写出你接触过的PHP 框架YII, CI, KOHANA, THINKPHP ZENDFARMEWORK14.画出循环链表数据结构图(PHP
7、 )15.用PHP写出一种排序算法function bubble_sort($array) $count = count($array); if ($count $i; $j-) if ($array$j “;$coun= strlen($c);for ($i=$coun;$i-1;$i-) /数组从0开始echo $c$i;function reverse_r($str)if (strlen($str)0)reverse_r( substr($str, 1) );/递归逐个输出字符echo substr($str, 0, 1);return;reverse_r($c);28.优化MYSQL数
8、据库的方法。答:1、选取最适用的字段属性, 尽可能减少定义字段长度, 尽量把字段设置NOT NULL,例如省份 ,性别,最好设置为ENUM2、使用连接(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)c.提高b的速度优化 :SELECT
9、FROM customerinfo LEFT JOIN orderid customerinfo.customerid=orderinfo.customeridWHERE orderinfo.customerid IS NULL29、MYSQL取得当前时间的函数是? ,格式化日期的函数是(2分)答:now(),date()30.实现中文字串截取无乱码的方法。答:function GBsubstr($string, $start, $length) if(strlen($string)$length)$str=null;$len=$start+$length;for($i=$start;$i0x
10、a0)$str.=substr($string,$i,2);$i+;else$str.=substr($string,$i,1);return $str.;elsereturn $string;31、用PHP写出显示客户端IP与服务器IP 的代码答:打印客户端IP:echo $_SERVERREMOTE_ADDR; 或者: getenv(REMOTE_ADDR);打印服务器IP:echo gethostbyname(““)32、如何修改SESSION的生存时间(1分).答:方法1:将php.ini中的session.gc_maxlifetime 设置为9999重启apache方法2:$save
11、Path = “./session_save_dir/“;$lifeTime = 小时 * 秒;session_save_path($savePath);session_set_cookie_params($lifeTime);session_start();方法3:setcookie() and session_set_cookie_params($lifeTime);33、有一个网页地址, 比如PHP开发资源网主页: http:/ = fopen(“http:/ “rb“);$contents = stream_get_contents($readcontents);fclose($rea
12、dcontents);echo $contents;方法2:echo file_get_contents(“http:/ 34、写出发贴数最多的十个人名字的SQL,利用下表:members(id,username,posts,pass,email)答:SELECT * FROM members ORDER BY posts DESC limit 0,10;35、JS的转向函数是?怎么引入一个外部JS 文件?答:window.location.href,36、foo()和foo() 之间有什么区别?(1分)答:foo()控制错误输出37、下面哪个选项没有将 john 添加到users 数组中?(
13、a) $users = john;(b) array_add($users,john);(c) array_push($users,john);(d) $users |= john; a , c 38、检测一个变量是否有设置的函数是否?是否为空的函数是 ?答:isset($str),empty($str);39.在PHP中, heredoc是一种特殊的字符串,它的结束标志必须 _$d)$max=$f; else$max=$d;echo $max;echo $c$f?($c$d?$c:$d):($f$d?$f:$d);43.看程序,写结果;$str3=;$str4=0;echo $str3=$str4?yes:no;echo “;$str5=0;$str6=0;echo $str5=$str6?yes:no.“;/yes,yes,yes?“;echo $var2;/5,2?“;echo count($arr2);/1,2?