首页 PHP面试题总汇

PHP面试题总汇

举报
开通vip

PHP面试题总汇.1. 什么事面向对象?主要特征是什么? 1. 什么事面向对象?主要特征是什么? 面象对象是把自然界的物体和概念直接映射到程序界的一种比较优雅的手段。主要特征:抽象、继承、封装、多态 。 SESSION 与 COOKIE的区别是什么,请从协议,产生的原因与作用说明? Session是服务器端保存客户端状态信息的方案,一般保存在服务器端内存中,session超时时间在服务器端进行设置。 Cookie是客户端保存信息的方案,一般是以文件的形式进行保存,cookie清空时间是在客户机浏览器设置。 HTTP 状态中302、...

PHP面试题总汇
.1. 什么事面向对象?主要特征是什么? 1. 什么事面向对象?主要特征是什么? 面象对象是把自然界的物体和概念直接映射到程序界的一种比较优雅的手段。主要特征:抽象、继承、封装、多态 。 SESSION 与 COOKIE的区别是什么,请从 协议 离婚协议模板下载合伙人协议 下载渠道分销协议免费下载敬业协议下载授课协议下载 ,产生的原因与作用说明? Session是服务器端保存客户端状态信息的 方案 气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载 ,一般保存在服务器端内存中,session超时时间在服务器端进行设置。 Cookie是客户端保存信息的方案,一般是以文件的形式进行保存,cookie清空时间是在客户机浏览器设置。 HTTP 状态中302、403、 500代码含义? 302:临时转移成功,请求的内容已转移到新位置 403:禁止访问 500:服务器内部错误 401代表未授权。 4. Linux 下建立压缩包,解压缩包的命令 Tar -cvf demo.tar demo Tar -xcf demo.tar Gzip demo guzip demo.gz gzip -d demo.gz Bzip2 -k demo. Bunzip demo.bz2 Zip -r demo unzip demo.zip 请写出数据类型(int char varchar datetime text)的意思;请问 varchar 和 char有什么区别? Int 整数 char 定长字符 Varchar 变长字符 Datetime 日期型 Text 文本型 Varchar 与char的区别 char是固定长度的字符类型,分配多少空间,就占用多长空间。 Varchar是可变长度的字符类型,内容有多大就占用多大的空间,能有效节省空间。 由于varchar类型是可变的,所以在数据长度改变的时,服务器要进行额外的操作,所以效率比char类型低。 6. MyISAM 和 InnoDB 的基本区别? MyISAM类型不支持事务处理等高级处理,而InnoDB类型支持。MyISAM类型的表强调的是性能,其执行速度比InnoDB类型更快,但是不提供事务支持,而InnoDB提供事务支持以及外部键等高级数据库功能。 不使用cookie向客户端发送一个cookie. 理解:session_start()开启时,生成一个常量 SID,当COOKIE开启时,这个常量为空,当COOKIE关闭时,这个常量中存储了PHPSESSID的值。通过在URL后加一个SID参数来传递SESSIONID的值,从而使客户端页面可以使用SESSION里面的值。 当客户端开启COOKIE和服务器端开启SESSION时。 浏览器第一次请求,服务器会向浏览器端发送一个COOKIE里面存储SESSIONID. 当浏览器第二次请求时,会把已存在的COOKIE一起提交到服务器端。 isset() 和 empty() 区别,对不同数据的判断结果,$a=0;$a='0';$a='';$a=false;$a=null; Isset()判断是否存在,存在就为真不管是否为假。 Empty()判断是否为空,为空时为真值,不存在也为真值。 Isset(): true;true;true;true;false Empty():true;true;true;true;true 12. 如何在页面之间传递变量(至少两种方式) ? get,post PHP 代码题 1. 写出匹配URL的正则表达式. /^[a-zA-z]+:\/\/(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\S*)?/ 2. 请写出常见的排序算法,并用PHP实现冒泡排序,将数组$a = array()按照从小到大的方式进行排序。 $arr=array(233,5,6,75454,32); Mao($arr); Function mao($arr){ $n=count($arr); For($i=0;$i<$n;$i++){ For($j=$n-1;$j>0;$j--){ If($arr[$j-1]>$arr[$j]){ $t=$arr[$j-1]; $arr[$j-1]=$arr[$j]; $arr[$j]=$t; } } } } 3. 在数据库test中的一个表student,字段是name,class,score。分别代表姓名、所在班级,分数。 1) 学出每个班级中的学生,按照成绩降序排序; 2) 查出每个班的及格人数和不及格人数,格式为:class、及格人数、不及格人数; 3) 用PHP写入连接数据库("localhost","msuser","mspass")、执行以上SQL、显示结果、判断错误、关闭数据库的过程; 1) SELECT * FROM student ORDER BY score desc; 1. 使用PHP描述冒泡排序和快速排序算法,对象可以是一个数组 //冒泡排序(数组排序) function bubble_sort($array) { $count = count($array); if ($count <= 0) return false; for($i=0; $i<$count; $i++){ for($j=$count-1; $j>$i; $j–){ if ($array[$j] < $array[$j-1]){ $tmp = $array[$j]; $array[$j] = $array[$j-1]; $array[$j-1] = $tmp; } } } return $array; } //快速排序(数组排序) function quick_sort($array) { if (count($array) <= 1) return $array; $key = $array[0]; $left_arr = array(); $right_arr = array(); for ($i=1; $i< $i++){> if ($array[$i] <= $key) $left_arr[] = $array[$i]; else $right_arr[] = $array[$i]; } $left_arr = quick_sort($left_arr); $right_arr = quick_sort($right_arr); return array_merge($left_arr, array($key), $right_arr); } 2. 使用PHP描述顺序查找和二分查找(也叫做折半查找)算法,顺序查找必须考虑效率,对象可以是一个有序数组 //二分查找(数组里查找某个元素) function bin_sch($array, $low, $high, $k){ if ($low <= $high){ $mid = intval(($low+$high)/2); if ($array[$mid] == $k){ return $mid; }elseif ($k < $array[$mid]){ return bin_sch($array, $low, $mid-1, $k); }else{ return bin_sch($array, $mid+1, $high, $k); } } return -1; } //顺序查找(数组里查找某个元素) function seq_sch($array, $n, $k){ $array[$n] = $k; for($i=0; $i<$n; $i++){ if($array[$i]==$k){ break; } } if ($i<$n){ return $i; }else{ return -1; } } 3. 写一个二维数组排序算法函数,能够具有通用性,可以调用php内置函数 //二维数组排序, $arr是数据,$keys是排序的健值,$order是排序规则,1是升序,0是降序 function array_sort($arr, $keys, $order=0) { if (!is_array($arr)) { return false; } $keysvalue = array(); foreach($arr as $key => $val) { $keysvalue[$key] = $val[$keys]; } if($order == 0){ asort($keysvalue); }else { arsort($keysvalue); } reset($keysvalue); foreach($keysvalue as $key => $vals) { $keysort[$key] = $key; } $new_array = array(); foreach($keysort as $key => $val) { $new_array[$key] = $arr[$val]; } return $new_array; } 题一: /** * 请以空格作为间隔,拆分字符串’Apple Orange Banana Strawberry’,组成数组$fruit, * 数组中所有元素都用小写字母,并按照字母先后次序排序 */ class sort { private $str; public function __construct($str) { $this->str=strtolower($str); } private function explodes() { if(empty($this->str)) return array(); $arr=explode(” “,$this->str); return is_array($arr)?$arr:array($arr); } public function sort() { $explode=$this->explodes(); sort($explode); return $explode; } } //$str=’Apple Orange Banana Strawberry’; ////$sortob=new sort($str); ////var_dump($sortob->sort()); 复制代码题二: /** * 对于用户输入一串字符串$string,要求$string中只能包含大于0的数字和英文逗号, * 请用正则 表达式验证,对于不符合要求的$string返回出错信息 */ class regx { public static function check($str) { if(preg_match(“/^([1-9,])+$/”,$str)) { return true; } return false; } } $str=”12345,6″; if(regx::check($str)) { echo “suc”; } else { echo “fail”; } 复制代码题三: 试题 中考模拟试题doc幼小衔接 数学试题 下载云南高中历年会考数学试题下载N4真题下载党史题库下载 3中得到的数组写入到改文件中, * 然后写一段程序从文件中读取并还原数组 * @author zhuwenqiong * */ class sort { private $str; public function __construct($str) { $this->str=strtolower($str); } private function explodes() { if(empty($this->str)) return array(); $arr=explode(” “,$this->str); return is_array($arr)?$arr:array($arr); } public function sort() { $explode=$this->explodes(); sort($explode); return $explode; } } class file { private $sort=null; private $filepath; public function __construct($arrobj,$path) { $this->sort=$arrobj; $this->filepath=$path; } private function getresource($filename,$mode) { return fopen($this->filepath.$filename,$mode); } private function closeresource($resource) { fclose($resource); } public function savefile($filename) { $arr=$this->sort->sort(); $fopen=$this->getresource($filename,”a+”); if(!$fopen){ echo “文件打开失败!”;exit; } var_dump($arr); foreach($arr as $key=>$value) { fwrite($fopen,$value.”\n”); } $this->closeresource($fopen); } public function readfile($filename) { $this->savefile($filename); $fopen=$this->getresource($filename,”r”); if(!$fopen){ echo “文件打开失败!”;exit; } $arr=array(); while(!feof($fopen)) { $get=fgets($fopen); if(!empty($get)) $arr[]=str_replace(“\n”,”",$get); } $this->closeresource($fopen); return $arr; } } $file=new file(new sort(‘Apple Orange Banana Strawberry’),”E:\\”); $arr=$file->readfile(“fruit.dat”); var_dump($arr); ?> 复制代码题四: handle=NULL; $this->getcon($host,$username,$password,$dbname); } public static function getBb() { self::$instance=new Db(); return self::$instance; } private function getcon($host,$username,$password,$dbname) { if($this->handle!=NULL){ return true; } $this->handle= mysqli_connect($host,$username,$password,$dbname); } } windows平台, Apache Http Server启动失败, 排错思路是什么? 答: 检查apache使用的80端口是否被占用,如果被占用,先停止占用80端口的服务,然后启动apache服务器 PHP session扩展默认将session数据储存在哪里? D A) SQLite Database B) MySQL Database C) Shared Memory D) File SystemE) Session Server .如果你想要自动加载类,下面哪种函数声明是正确的 C A) function autoload($class_name) B) function __autoload($class_name, $file) C) function __autoload($class_name) D) function _autoload($class_name) E) function autoload($class_name, $file) PHP程序使用utf-8编码, 以下程序输出结果是什么? B A) 9B) 13C) 18D) 17 你所知道的php数组相关的函数? 答: Array_flip() Array_pop() Array_push() Array_unshift() End() Sort() Rsort() Usort() Count() Key() Current() List() Each() Foreach() Array_count_values() Array_difff() Arrry_keys() Array_merge() Array_pad() Array_rand() Array_shift() Array_unique() Array_values() Next() Prev() Reset() php读取文件内容的几种方法和函数? 答: 打开文件,然后读取。Fopen() fread() 打开读取一次完成 file_get_contents() 以下程序,变量str什么值的情况下输入111? if( ! $str ) { echo 111; } 答: 在$str值为:0,’0′,false,null,”" 以下程序,变量str什么值的情况下输入111? if( $str ) { echo 111; } 答; 同上 你所知道的PHP的一些技术(smarty等)? 答: Smarty,jquery,ajax,memcache,div+css,js,mysqli,pdo,svn,thinkphp,brophp,yii 你所熟悉的PHP论坛系统 有哪些? 答: discuz 你所熟悉的PHP商城系统 有哪些? 答: ecshop 你所熟悉的PHP开发框架 有哪些? 答: Brophp,thinkphp 说说你对缓存技术的了解? 答: 1、缓存技术是将动态内容缓存到文件中,在一定时间内访问动态页面直接调用缓存文件,而不必重新访问数据库。 2、使用memcache可以做缓存。 你所知道的 设计 领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计 模式有哪些? 答: 工厂模式、策略模式、单元素模式、观察者模式、命令链模式 说说你对代码管理的了解? 常使用那些代码版本控制软件? 答: 通常一个项目是由一个团队去开发,每个人将自己写好的代码提交到版本服务器,由项目负责人按照版本进行管理,方便版本的控制,提高开发效率,保证需要时可以回到旧版本。 常用的版本控制器:SVN 说说你对SVN的了解?优缺点? 答: SVN是一种版本控制器,程序员开发的代码递交到版本服务器进行集中管理。 SVN的优点:代码进行集中管理,版本控制容易,操作比较简单,权限控制方便。 缺点:不能随意修改服务器项目文件夹。 怎么找到PHP.ini的路径? 答: 一般都在php的安装目录下,或者window系统的windows目录下。 PHP加速模式/扩展? PHP调试模式/工具? 答: Zend Optimizer加速扩展 调试工具:xdebug 你常用到的mysql命令? 答: Select * from table Update table set field=’value’ where id= Delete from where id= Insert into table values(‘value1′,’value2′) Create table tablename Show tables 进入mysql管理命令行的命令? 答: Mysql -u root -p show databases; 这个命令的作用? 答: 显示当前mysql服务器中有哪些数据库 show create database mysql; 这个命令的作用? 答: 显示创建数据库的sql语句 show create table user; 这个命令的作用? 答: 显示创建表的sql语句 desc user; 这个命令的作用? 答: 查询user表的结构 explain select * from user; 这个命令的作用? 答: 获取select相关信息 show processlist; 这个命令的作用? 答: 显示哪些线程正在运行 SHOW VARIABLES; 这个命令的作用? 答: 显示系统变量和值 SHOW VARIABLES like ’%conn%’; 这个命令的作用? 答: 显示系统变量名包含conn的值 LEFT JOIN 写一个SQL语句? 答: Select A.id,A.class from A left join B on A.cid=B.id in, not ni, exist, not exist的作用和区别? 答: in在什么中 Not in 不在什么中 Exists 存在 Not exists 不存在 怎么找到数据库的配置文件路径? 答: 在数据库安装目录下,my.ini 简述Linux下安装PHP的过程? 答: 安装软件之前先安装编译工具gcc、gcc-c++ 拷贝源码包,解包解压缩 Cd /lamp/php进入php目录 ./configure –prefix=/usr/local/php –with-config-file-path=/usr/local/php/etc指定安装目录和配置文件目录 Make 编译 Make install安装 简述Linux下安装Mysql的过程? 答: Groupadd mysql 添加一个用户组mysql Useradd -g mysql mysql 添加一个mysql用户指定分组为mysql Cd /lamp/mysql 进入mysql目录 ./configure –prefix=/usr/local/mysql/ –with-extra-charsets=all Make Make all 简述Linux下安装apache的过程? 答: Cd /lamp/httpd 进去apache软件目录 ./configure –prefix=/usr/local/apache2/ –sysconfdir=/etc/httpd/ –with-included-apr Make Make all HTML/CSS/DIV/Javascritp: 答: 1. 设计一个页面(4个 div 第一个div 宽960px 居中;第2-4个div 3等分960px;)
用javascript取得一个input的值?取得一个input的属性? 答: document.getElementById(‘name’).value; document.getElementById(‘name’).type; 用Jquery取得一个input的值?取得一个input的属性? 答: $(“input[name='aa']“).val(); $(“input[name='aa']“).attr(‘name’); 请您写一段ajax提交的js代码,或者写出ajax提交的过程逻辑。 答: var xmlhttp; if(window.XMLHttpRquest) { xmlhttp=new XMLHttpRequest(); } else if(window.ActiveXObject) { xmlhttp=new ActiveXObject(‘Microsoft.XMLHTTP’); } xmlhttp.open(‘GET’,’1.php?aa=name’,true); xmlhttp.onreadystatechange=function(){ if(xmlhttp.readyState==4) { if(xmlhttp.status==200) { var text=xmlhttp.responseText; } } } xmlhttp.send(null); 写出你认为语言中的高级函数 答: Imagecreate Imagecolorallocate Imagesetpixel Imagettftext Iconv Mb_substr Mysql_connect() Mysql_select_db Mysql_query mysql_fetch_row Mysql_close 简述Cookie的设置及获取过程 答: 设置COOKIE的值: Setcookie(名称,值,保存时间,有效域); 获取值:$_COOKIE['名称']; 面向对象中接口和抽象类的区别及应用场景 答: 1、有抽象方法的类叫做抽象类,抽象类中不一定有抽象方法,抽象方法必须使用abstract关键字定义。 2、接口中全部是抽象方法,方法不用使用abstract定义。 3、当多个同类的类要设计一个上层,通常设计为抽象类,当多个异构的类要设计一个上层,通常设计为接口。 用面向对象来实现A对象继承B和C对象 答: Interface B{ } Interface C{ } Class A implements B,C{ } 写出Smarty模板引擎中你最常用的关键词 答: Assign Display Foreach Section Loop Item $smarty Now Const get MySQL存储引擎中MyISAM和InnoDB,在同样的应用场景中各有什么优缺点,索引结构如何实现? 答: MyISAM不支持外键和事务处理,但是查询速度比InnoDB类型的稍快。 InnoDB类型数据库支持外键和事务处理,查询速度比MyISAM稍慢。 创建索引:alert table tablename add index (`字段名`) 如下user表结构 名称 类型 说明 备注 Uid Int unsigned 主键 Name Varchar(20) Age Tinyint unsigned 需求: l 增加一个字段性别sex,写出修改语句 Alert table user add sex enum(’0′,’1′); l 查询出年龄介于20岁到30岁之间的用户 Select * from user where age>20 and age<30 如果是一个Web频繁访问的查询,上题的查询如何优化? 使用memcache缓存技术,在一定时间内将动态内容缓存到文件中,访问动态页面时,世界调用缓存文件而不必重新查询数据库。 echo(),print(),print_r()的区别? 答: Echo() 是PHP语法,可以输出多个值,不能输出数组。 Print() 是PHP函数,可以输出单个简单类型的变量值。 Print_r() 是php函数,可以打印出复杂类型变量的值,如数组,对象。 什么是模板技术、能够使HTML和PHP分离开使用的模板? 答: 模板技术就是使程序的逻辑代码和界面分开的技术。 能够使HTML和PHP分开的模板有:Smarty、Template、PHPlib Template、FastTemplate 对于大流量的网站,您采用什么样的方法来解决访问量问题? 答: 优化程序,优化数据库,如果程序和数据库已经最优化,使用以下解决方法: 1、确定当前服务器设备是否满足流量需求。 2、使用Memcache缓存技术,把动态内容缓存到文件中,动态网页直接调用这些文件,而不必再访问数据库。 3、禁止外部盗链,图片和文件外部盗链会给服务器带来大量的负载压力,可以通过refer来禁止外部盗链,或者使用apache来配置禁止盗链。 4、控制大文件的下载,大文件的下载对于非SCSI硬盘来说会占用大量的资源,导致服务器的响应能力下降。 5、使用不同的主机分流主要流量,使服务器均衡负载。 6、使用流量统计软件统计分析网站流量,可以知道哪些地方耗费了大量的流量,哪些页面需要再进行优化。 mysql_fetch_row() 和mysql_fetch_array之间有什么区别? 答: Mysql_fetch_row()以索引数组的方式取查询的结果集,mysql_fetch_array()以索引数组和关联数组两种方式取查询的结果集。 实现中文字串截取无乱码的方法 答: Mb_substr(); 用PHP写出显示客户端IP与服务器IP的代码 答: 获取客户端IP:get_env(“REMOTE_ADDR”); 获取服务器端IP:$_SERVER["SERVER_ADDR"]; 有一个网页地址, 比如PHP开发资源网主页: http://www.phpres.com/index.html,如何得到它的内容? 答: 获取网页内容: $url=”http://www.phpres.com/index.html“; $str=file_get_contents($url); 请写一个函数验证电子邮件的格式是否正确 答: function checkemail($email) { echo preg_match(‘/^[\w]+@[\w]+[\.]([\w]+)$/’,$email)?’email格式正确‘:’email格式不正确‘; } 简述如何得到当前执行脚本路径,包括所得到参数 答: 用$_SERVER['DOCUMENT_ROOT'].$_SERVER['REQUEST_URI'];取得当前页面的完整路径和参数。 取得参数:$_SERVER['QUERY_STRING']; JS表单弹出对话框函数是?获得输入焦点函数是? 答: Alert(); Onfocus(); .写一个函数,算出两个文件的相对路径 如 $a = ’/a/b/c/d/e.php’; $b = ’/a/b/12/34/c.php’;    计算出 $b 相对于 $a 的相对路径应该是 http://www.cnblogs.com/c/d将()添上 $a=”http://www.cnblogs.com/a/b/c/d/e.php”; $b=”http://www.cnblogs.com/a/b/12/34/c.php”; 答: $ainfo=parse_url($a); $binfo=parse_url($b); $apath=ltrim($ainfo['path'],’/'); $bpath=ltrim($binfo['path'],’/'); $arr=explode(‘/’,$apath); $brr=explode(‘/’,$bpath); $count=count($arr); for($i=0;$i<$count;$i++) { if($arr[$i]==$brr[$i]) { $brr[$i]=’..’; } else { break; } } $cha=implode(‘/’,$brr); print_r($cha); 写一个函数,能够遍历一个文件夹下的所有文件和子文件夹。 答: function show($dirs){ $dir=opendir($dirs); While($f=readdir($dir)) { If($f!=’.' && $f!=’..’) { $file=$dirs.’/’.$f; If(is_file($file)) { Echo ’文件名:‘.$file.’
’; } Else { Show($file); } } } } Cookie和session的区别,禁止了cookie后session能正常使用吗?session的缺点是什么?session在服务器端是存在哪里的?是共有的还是私有的? 答: COOKIE保存在客户端,用户通过手段可以进行修改,不安全,单个cookie允许的最大值是3k。 而SESSION保存在服务器端,相对比较安全,大小没有限制。 禁用了cookie之后session不能正常使用。 Session的缺点:保存在服务器端,每次读取都从服务器进行读取,对服务器有资源消耗。 Session保存在服务器端的文件或数据库中,默认保存在文件中,文件路径由php配置文件的session.save_path指定。 Session文件是公有的。 数据库索引有几类,分别是什么?什么时候该用索引? 答: 普通索引、主键索引、唯一索引 并非所有的数据库都以相同的方式使用索引,作为通用规则,只有当经常查询列中的数据时才需要在表上创建索引。 写几个魔术方法并说明作用? 答: __call()当调用不存在的方法时会自动调用的方法 __autoload()在实例化一个尚未被定义的类是会自动调用次方法来加载类文件 __set()当给未定义的变量赋值时会自动调用的方法 __get()当获取未定义变量的值时会自动调用的方法 __construct()构造方法,实例化类时自动调用的方法 __destroy()销毁对象时自动调用的方法 __unset()当对一个未定义变量调用unset()时自动调用的方法 __isset()当对一个未定义变量调用isset()方法时自动调用的方法 __clone()克隆一个对象 __tostring()当输出一个对象时自动调用的方法 $_REQUEST、$_POST、$_GET、$_COOKIE、$_SESSION、$_FILE的意思是什么? 答; 它们都是PHP预定义变量。 $_REQUEST用来获取post或get方式提交的值。 $_POST用来获取post方式提交的值。 $_GET用来获取get方式提交的值。 $_COOKIE用来获取cookie存储的值, $_SESSION用来获取session存储的值, $_FILE用来获取上传文件表单的值 数组中下标最好是什么类型的,为什么? 答: 数组的下标最好是数字类型的,数字类型的处理速度快。 ++i和i++哪一个效率高,为什么? 答: ++i效率比i++的效率更高,因为++i少了一个返回i的过程。 119.magic_quotes_gpc()、magic_quotes_runtime()的意思是什么? 答: Magic_quotes_gpc()是php配置文件中的,如果设置为on则会自动POST,GET,COOKIE中的字符串进行转义,在‘之前加\ Magic_quotes_runtime()是php中的函数,如果参数为true则会数据库中取出来的单引号、双引号、反斜线自动加上反斜杠进行转义。 120.Echo()、print()、print_r()的区别? 答: Echo 是php语法,可以输出多个变量,不能输出数组。 Print()是php中的函数,只能输出简单的变量。 Print_r()是php中的函数,可以输出变量也可以输出数组。 121.框架中什么是单一入口和多入口,单一入口的优缺点? 答: 1、多入口就是通过访问不同的文件来完成用户请求。 单一入口只web程序所有的请求都指向一个脚本文件的。 2、单一入口更容易控制权限,方便对http请求可以进行安全性检查。 缺点:URL看起来不那么美观,特别是对搜索引擎来说不友好。 122.提示类型200、404、502是什么意思。 答: 200是请求成功,404是文件未找到,502是服务器内部错误。 123.编写一个自定义函数提取这段路径的的后缀名。 答: “Www/hello/test.php.html?a=3&b=4” Function geturltype($url){ $info=parse_url($url); Return end(explode(‘.’,$info['path'])); } 124.你对Memcach的理解,优点有哪些? 答: Memcache是一种缓存技术,在一定的时间内将动态网页经过解析之后保存到文件,下次访问时动态网页就直接调用这个文件,而不必在重新访问数据库。使用memcache做缓存的好处是:提高网站的访问速度,减轻高并发时服务器的压力。 Memcache的优点:稳定、配置简单、多机分布式存储、速度快。 125.对关系型数据库而言,索引是相当重要的概念,请回答有关索引几个问题: a) 索引的目的是什么? b) 索引对数据库系统的负面影响是什么? c) 为数据表建立索引的原则有哪些? d) 什么情况下不宜建立索引? 答: 索引的目的: 1、快速访问数据表中的特定信息,提高检索速度 2、创建唯一性索引,保证数据库表中每一行数据的唯一性 3、加速表和表之间的连接 4、使用分组和排序子句进行数据检索时,可以显著减少查询中分组和排序的时间 负面影响:创建索引和维护索引需要耗费时间,这个时间随着数据量的增加而增加;索引需要占用物理空间,不光是表需要占用数据空间,每个索引也需要占用物理空间;当对表进行增、删、改的时候索引也要动态维护,这样就降低了数据的维护速度。 建立索引的原则: 1、在最频繁使用的、用以缩小查询范围的字段上建立索引 2、在平频繁使用的、需要排序的字段上建立索引 什么情况下不宜建立索引: 1、对于查询中很少涉及的列或者重复值比较多的列,不宜建立索引 2、对于一些特殊的数据类型,不宜建立索引,比如文本字段(text)等。 126.web应用中,数据库的读取频率远高于写入频率, 如何优化MySQL而应对此种情景 ? 答: 使用memcache缓存技术,将动态数据缓存到文件,访问动态页面时直接调用缓存文件,而不必重新访问数据库,这样就减少了查询数据库的次数。 如果网站的访问量很大,可以把数据库读写服务器分开,使用多态服务器去处理数据库查询,使用较少的服务器去处理数据库的写入和修改。 127.include与require的区别? 答: Php在遇到include时就重新解释一次,如果一个页面中出现10次include,php就重新解释10次,而php遇到require时只解释一次,即使页面中出现多次require,php也直解释一次。 使用require包含文件时,被包含的文件当成了当前文件的一个组成部分,如果被包含的文件中有语法错误或者文件不存在,程序就提示错误信息,并结束执行。 使用include包含文件时,相当于指定了文件的路径,被包含的文件中有语法错误或者文件不存在时,页面只是给出警告信息,不响应程序本身的执行。 128.PHP字符串中单引号与双引号的区别? 答: 单引号不能解释变量,而双引号可以解释变量。 单引号不能转义字符,在双引号中可以转义字符。 129.php5中魔术方法有哪几个? 并说明其用法? 答: __construct实例化对象时自动调用的方法。 __destruct销毁对象时自动调用的方法。 __set当对一个不存在的变量设置值的时候自动调用的方法。 __get当调用一个不存在的变量的时候自动调用的方法。 __autoload 当实例化类一个不存在的类的时候会自动调用的方法。 __isset 当对一个不存在的变量使用isset方法时自动调用的方法 __unset 当对一个不存在的变量使用unset方法时自动调用的方法。 __call 当调用一个不存在的方法时自动调用的方法。 __clone 克隆一个对象。 __tostring 当输出一个对象时自动调用的方法。 130.php中,模板引擎的目的是什么? 你用过哪些模板引擎? 答: 使用模板引擎的目的是使程序的逻辑代码和html界面代码分离开,是程序的结构更清晰。 使用过的模板引擎:Smarty、ThinkPHP的ThinkTemplate 131.使用版本控制工具的目的是什么? 你用过哪些版本控制工具? 答: 使用版本控制器的目的是: 实现开发团队并行开发,提高开发效率,对于软件开发进程中文件或目录的发展过程提供有效的追踪手段,保证在需要时可以回到旧版本,避免文件的丢失、修改的丢失和覆盖,通过对版本库的访问控制避免未经授权的访问和修改,达到有效保护企业软件资产和知识产权的目的。 使用过的版本控制工具:SVN 132.指出以下代码片段中的SQL注入漏洞以及解决方法(magic_quotes_gpc = off) 答: mysql_query(“select id,title from content where catid=’{$_GET[catid]}’ and title like ’%$_GET[keywords]%’”, $link); 注入漏洞主要存在用户提交的数据上,这里的注入漏洞主要是$_GET[catid]和$_GET[keyword] 解决注入漏洞: $_GET[catid]=intval($_GET[catid]); $sql=”select id,title from content where catid=’{$_GET[catid]}’ and title like ’%$_GET[keywords]%”; $sql=addslashes($sql); Mysql_query($sql); 133.分别指出php.ini中 magic_quotes_gpc, magic_quotes_runtime两项参数的作用. 答: Magic_quotes_gpc的作用是在POST、GET、COOKIE数据上使用addslashes()自动转义。 Magic_quotes_runtime参数的作用是设置状态,当状态为0时则关闭自动转义,设置为1则自动转义,将数据库中取出来的单引号、双引号、反斜线这些字符加上反斜杠转义。 134.写出以下php代码的运行结果: 规范 编程规范下载gsp规范下载钢格栅规范下载警徽规范下载建设厅规范下载 书写sql语句和对特殊字符进行过滤,导致客户端可以通过全局变量POST和GET提交一些sql语句正常执行。 防止SQL注入: 1、开启配置文件中的magic_quotes_gpc和magic_quotes_runtime设置 2、执行sql语句时使用addslashes进行sql语句转换 3、Sql语句书写尽量不要省略小引号和单引号 4、过滤掉sql语句中的一些关键字:update、insert、delete、select、* 5、提高数据库表和字段的命名技巧,对一些重要的字段根据程序的特点命名,取不易被猜到的。 6、Php配置文件中设置register_globals为off,关闭全局变量注册 7、控制错误信息,不要再浏览器上输出错误信息,将错误信息写到日志文件中。 141.一个字节占多少bit ? 一个IPv4地址占几个字节? 一个IPv6地址呢? 答: 一个字节占8bit,一个IPV4占用4字节,一个IPV6占用16字节。 142.M ADSL宽带连接, 理想情况下, 最大下载速度是多少KB/s ? 答: 256KB/s 143.请写出一个正则表达式,用于匹配一个HTML文件中标记中的图片地址 答: $url=””; // 145.Fatal error: Call to undefined method ge_user() in /website/index.php on line 39 答: 调用了未定义的方法ge_user(),检查程序中有没有定义此方法 146.Fatal error: Class ’client’ not found in /website/index.php on line 173 答: 类client没有找
本文档为【PHP面试题总汇】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_277806
暂无简介~
格式:doc
大小:478KB
软件:Word
页数:40
分类:互联网
上传时间:2014-04-04
浏览量:68