初级程序员php面试题

初级程序员php面试题

ID:12792872

大小:72.50 KB

页数:28页

时间:2018-07-19

上传者:U-4651
初级程序员php面试题_第1页
初级程序员php面试题_第2页
初级程序员php面试题_第3页
初级程序员php面试题_第4页
初级程序员php面试题_第5页
资源描述:

《初级程序员php面试题》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

初级程序员PHP面试题php面试题及答案(原创)收藏基础题:1.表单中get与post提交方法的区别?答:get是发送请求HTTP协议通过url参数传递进行接收,而post是实体数据,可以通过表单提交大量信息.2.session与cookie的区别?答:session:储存用户访问的全局唯一变量,存储在服务器上的php指定的目录中的(session_dir)的位置进行的存放cookie:用来存储连续訪問一个頁面时所使用,是存储在客户端,对于Cookie来说是存储在用户WIN的Temp目录中的。两者都可通过时间来设置时间长短3.数据库中的事务是什么?答:事务(transaction)是作为一个单元的一组有序的数据库操作。如果组中的所有操作都成功,则认为事务成功,即使只有一个操作失败,事务也不成功。如果所有操作完成,事务则提交,其修改将作用于所有其他数据库进程。如果一个操作失败,则事务将回滚,该事务所有操作的影响都将取消。简述题:1、用PHP打印出前一天的时间格式是2006-5-1022:21:21(2分)答:echodate('Y-m-dH:i:s',strtotime('-1days'));2、echo(),print(),print_r()的区别(3分)答:echo是PHP语句,print和print_r是函数,语句没有返回值,函数可以有返回值(即便没有用)print()只能打印出简单类型变量的值(如int,string)print_r()可以打印出复杂类型变量的值(如数组,对象) echo输出一个或者多个字符串3、能够使HTML和PHP分离开使用的模板(1分)答:Smarty,Dwoo,TinyButStrong,TemplateLite,Savant,phemplate,XTemplate5、使用哪些工具进行版本控制?(1分)答:cvs,svn,vss;6、如何实现字符串翻转?(3分)答:echostrrev($a);7、优化MYSQL数据库的方法。(4分,多写多得)答:1、选取最适用的字段属性,尽可能减少定义字段长度,尽量把字段设置NOTNULL,例如'省份,性别',最好设置为ENUM2、使用连接(JOIN)来代替子查询:a.删除没有任何订单客户:DELETEFROMcustomerinfoWHEREcustomeridNOTin(SELECTcustomeridFROMorderinfo)b.提取所有没有订单客户:SELECTFROMcustomerinfoWHEREcustomeridNOTin(SELECTcustomeridFROMorderinfo)c.提高b的速度优化:SELECTFROMcustomerinfoLEFTJOINorderidcustomerinfo.customerid=orderinfo.customeridWHEREorderinfo.customeridISNULL3、使用联合(UNION)来代替手动创建的临时表a.创建临时表:SELECTnameFROM`nametest`UNIONSELECTusernameFROM`nametest2`4、事务处理:a.保证数据完整性,例如添加和修改同时,两者成立则都执行,一者失败都失败mysql_query("BEGIN"); mysql_query("INSERTINTOcustomerinfo(name)VALUES('$name1')";mysql_query("SELECT*FROM`orderinfo`wherecustomerid=".$id");mysql_query("COMMIT");5、锁定表,优化事务处理:a.我们用一个SELECT语句取出初始数据,通过一些计算,用UPDATE语句将新值更新到表中。包含有WRITE关键字的LOCKTABLE语句可以保证在UNLOCKTABLES命令被执行之前,不会有其它的访问来对inventory进行插入、更新或者删除的操作mysql_query("LOCKTABLEcustomerinfoREAD,orderinfoWRITE");mysql_query("SELECTcustomeridFROM`customerinfo`whereid=".$id);mysql_query("UPDATE`orderinfo`SETordertitle='$title'wherecustomerid=".$id);mysql_query("UNLOCKTABLES");6、使用外键,优化锁定表a.把customerinfo里的customerid映射到orderinfo里的customerid,任何一条没有合法的customerid的记录不会写到orderinfo里CREATETABLEcustomerinfo(customeridINTNOTNULL,PRIMARYKEY(customerid))TYPE=INNODB;CREATETABLEorderinfo(orderidINTNOTNULL, customeridINTNOTNULL,PRIMARYKEY(customerid,orderid),FOREIGNKEY(customerid)REFERENCEScustomerinfo(customerid)ONDELETECASCADE)TYPE=INNODB;注意:'ONDELETECASCADE',该参数保证当customerinfo表中的一条记录删除的话同时也会删除order表中的该用户的所有记录,注意使用外键要定义事务安全类型为INNODB;7、建立索引:a.格式:(普通索引)->创建:CREATEINDEX<索引名>ONtablename(索引字段)修改:ALTERTABLEtablenameADDINDEX[索引名](索引字段)创表指定索引:CREATETABLEtablename([...],INDEX[索引名](索引字段))(唯一索引)->创建:CREATEUNIQUE<索引名>ONtablename(索引字段)修改:ALTERTABLEtablenameADDUNIQUE[索引名](索引字段)创表指定索引:CREATETABLEtablename([...],UNIQUE[索引名](索引字段))(主键)->它是唯一索引,一般在创建表是建立,格式为:CREATATABLEtablename([...],PRIMARYKEY[索引字段])8、优化查询语句a.最好在相同字段进行比较操作,在建立好的索引字段上尽量减少函数操作例子1:SELECT*FROMorderWHEREYEAR(orderDate)<2008;(慢)SELECT*FROMorderWHEREorderDate<"2008-01-01";(快)例子2: SELECT*FROMorderWHEREaddtime/7<24;(慢)SELECT*FROMorderWHEREaddtime<24*7;(快)例子3:SELECT*FROMorderWHEREtitlelike"%good%";SELECT*FROMorderWHEREtitle>="good"andname<"good";8、PHP的意思(送1分)答:PHP是一个基于服务端来创建动态网站的脚本语言,您可以用PHP和HTML生成网站主页9、MYSQL取得当前时间的函数是?,格式化日期的函数是(2分)答:now(),date()10、实现中文字串截取无乱码的方法。(3分)答:functionGBsubstr($string,$start,$length){if(strlen($string)>$length){$str=null;$len=$start+$length;for($i=$start;$i<$len;$i++){if(ord(substr($string,$i,1))>0xa0){$str.=substr($string,$i,2);$i++;}else{$str.=substr($string,$i,1);}}return$str.'...';}else{return$string;}} 11、您是否用过版本控制软件?如果有您用的版本控制软件的名字是?(1分)12、您是否用过模板引擎?如果有您用的模板引擎的名字是?(1分)答:用过,smarty13、请简单阐述您最得意的开发之作(4分)答:信息分类14、对于大流量的网站,您采用什么样的方法来解决访问量问题?(4分)答:确认服务器硬件是否足够支持当前的流量,数据库读写分离,优化数据表,程序功能规则,禁止外部的盗链,控制大文件的下载,使用不同主机分流主要流量15、用PHP写出显示客户端IP与服务器IP的代码1分)答:打印客户端IP:echo$_SERVER[‘REMOTE_ADDR’];或者:getenv('REMOTE_ADDR');打印服务器IP:echogethostbyname("www.bolaiwu.com")16、语句include和require的区别是什么?为避免多次包含同一文件,可用(?)语句代替它们?(2分)答:require->require是无条件包含也就是如果一个流程里加入require,无论条件成立与否都会先执行requireinclude->include有返回值,而require没有(可能因为如此require的速度比include快)注意:包含文件不存在或者语法错误的时候require是致命的,include不是17、如何修改SESSION的生存时间(1分). 答:方法1:将php.ini中的session.gc_maxlifetime设置为9999重启apache方法2:$savePath="./session_save_dir/";$lifeTime=小时*秒;session_save_path($savePath);session_set_cookie_params($lifeTime);session_start();方法3:setcookie()andsession_set_cookie_params($lifeTime);18、有一个网页地址,比如PHP开发资源网主页:http://www.phpres.com/index.html,如何得到它的内容?($1分)答:方法1(对于PHP5及更高版本):$readcontents=fopen("http://www.phpres.com/index.html","rb");$contents=stream_get_contents($readcontents);fclose($readcontents);echo$contents;方法2:echofile_get_contents("http://www.phpres.com/index.html");19、在HTTP1.0中,状态码401的含义是(?);如果返回“找不到文件”的提示,则可用header函数,其语句为(?);(2分)答:状态401代表未被授权,header("Location:www.xxx.php");12、在PHP中,heredoc是一种特殊的字符串,它的结束标志必须?(1分)答:heredoc的语法是用"<<<"加上自己定义成对的标签,在标签范围內的文字视为一个字符串例子:$str=<<23、foo()和@foo()之间有什么区别?(1分)答:@foo()控制错误输出24、如何声明一个名为”myclass”的没有方法和属性的类?(1分)答:classmyclass{}25、如何实例化一个名为”myclass”的对象?(1分)答:newmyclass()26、你如何访问和设置一个类的属性?(2分)答:$object=newmyclass(); $newstr=$object->test;$object->test="info";27、mysql_fetch_row()和mysql_fetch_array之间有什么区别?(1分)答:mysql_fetch_row是从结果集取出1行数组,作为枚举mysql_fetch_array是从结果集取出一行数组作为关联数组,或数字数组,两者兼得28、GD库是做什么用的?(1分)答:gd库提供了一系列用来处理图片的API,使用GD库可以处理图片,或者生成图片。在网站上GD库通常用来生成缩略图或者用来对图片加水印或者对网站数据生成报表。29、指出一些在PHP输入一段HTML代码的办法。(1分)答:echo"aaa";30、下面哪个函数可以打开一个文件,以对文件进行读和写操作?(1分)(a)fget()(b)file_open()(c)fopen()(d)open_file()[c]31、下面哪个选项没有将john添加到users数组中?(1分)  (a)$users[]=‘john’;  (b)array_add($users,’john’);  (c)array_push($users,‘john’);  (d)$users||=‘john’;[a,c]32、下面的程序会输入是否?(1分)  $num=10;   functionmultiply(){  $num=$num*10;  }  multiply();  echo$num;  ?>输出:1033、使用php写一段简单查询,查出所有姓名为“张三”的内容并打印出来(2分)  表名User  NameTelContentDate  张三13333663366大专毕业2006-10-11  张三13612312331本科毕业2006-10-15  张四021-55665566中专毕业2006-10-15  请根据上面的题目完成代码:  $mysql_db=mysql_connect("local","root","pass");  @mysql_select_db("DB",$mysql_db);$result=mysql_query("SELECT*FROM`user`WHEREname='张三'");while($rs=mysql_fetch_array($result)){echo$rs["tel"].$rs["content"].$rs["date"];}34、如何使用下面的类,并解释下面什么意思?(3)  classtest{functionGet_test($num){  $num=md5(md5($num)."En");  return$num;  }  } 答:$testnum="123";$object=newtest();$encrypt=$object->Get_test($testnum);echo$encrypt;类test里面包含Get_test方法,实例化类调用方法多字符串加密35、写出SQL语句的格式:插入,更新,删除(4分)  表名User  NameTelContentDate  张三13333663366大专毕业2006-10-11  张三13612312331本科毕业2006-10-15  张四021-55665566中专毕业2006-10-15  (a)有一新记录(小王13254748547高中毕业2007-05-06)请用SQL语句新增至表中mysql_query("INSERTINTO`user`(name,tel,content,date)VALUES('小王','13254748547','高中毕业','2007-05-06')")  (b)请用sql语句把张三的时间更新成为当前系统时间$nowDate=date("Ymd");mysql_query("UPDATE`user`SETdate='".$nowDate."'WHEREname='张山'");  (c)请写出删除名为张四的全部记录mysql_query("DELETEFROM`user`WHEREname='张四'");36、请写出数据类型(intcharvarchardatetimetext)的意思;请问varchar和char有什么区别(2分)答:int是数字类型,char固定长度字符串,varchar实际长度字符串,datetime日期时间型,text文本字符串char的场地固定为创建表设置的长度,varchar为可变长度的字符 38、写出以下程序的输出结果(1分)  $b=201;  $c=40;$a=$b>$c?4:5;  echo$a;  ?>答:439、检测一个变量是否有设置的函数是否?是否为空的函数是?(2分)答:isset($str),empty($str);40、取得查询结果集总数的函数是?(1分)答:mysql_num_rows($result);41、$arr=array('james','tom','symfony');请打印出第一个元素的值(1分)答:echo$array[0];42、请将41题的数组的值用','号分隔并合并成字串输出(1分)答:for($i=0;$i ");while($rowArray=mysql_fetch_array($result)){print("".$rowArray['categroy_name']." ");}print("");}编程题:1.写一个函数,尽可能高效的,从一个标准url里取出文件的扩展名例如:http://www.sina.com.cn/abc/de/fg.php?id=1需要取出php或.php答案1: functiongetExt($url){$arr=parse_url($url);$file=basename($arr['path']);$ext=explode(".",$file);return$ext[1];}答案2:functiongetExt($url){$url=basename($url);$pos1=strpos($url,".");$pos2=strpos($url,"?");if(strstr($url,"?")){returnsubstr($url,$pos1+1,$pos2-$pos1-1);}else{returnsubstr($url,$pos1);}}2.在HTML语言中,页面头部的meta标记可以用来输出文件的编码格式,以下是一个标准的meta语句  请使用PHP语言写一个函数,把一个标准HTML页面中的类似meta标记中的charset部分值改为big5  请注意:  1.需要处理完整的html页面,即不光此meta语句  2.忽略大小写3.'和"在此处是可以互换的4.'Content-Type'两侧的引号是可以忽略的,但'text/html;charset=gbk'两侧的不行  5.注意处理多余空格 3.写一个函数,算出两个文件的相对路径  如$a='/a/b/c/d/e.php';  $b='/a/b/12/34/c.php';  计算出$b相对于$a的相对路径应该是../../c/d将()添上答:functiongetRelativePath($a,$b){$returnPath=array(dirname($b));$arrA=explode('/',$a);$arrB=explode('/',$returnPath[0]);for($n=1,$len=count($arrB);$n<$len;$n++){if($arrA[$n]!=$arrB[$n]){break;}}if($len-$n>0){$returnPath=array_merge($returnPath,array_fill(1,$len-$n,'..'));}$returnPath=array_merge($returnPath,array_slice($arrA,$n));returnimplode('/',$returnPath);}echogetRelativePath($a,$b);填空题:1.在PHP中,当前脚本的名称(不包括路径和查询字符串)记录在预定义变量__$_SERVER['PHP_SELF']__中;而链接到当前页面的URL记录在预定义变量__$_SERVER['HTTP_REFERER']__中 2.执行程序段将输出__0__。3.在HTTP1.0中,状态码401的含义是____;如果返回“找不到文件”的提示,则可用header函数,其语句为____。4.数组函数arsort的作用是__对数组进行逆向排序并保持索引关系__;语句error_reporting(2047)的作用是__报告所有错误和警告__。5.PEAR中的数据库连接字符串格式是____。6.写出一个正则表达式,过虑网页上的所有JS/VBS脚本(即把scrīpt标记及其内容都去掉):preg_replace("/].*?>.*?/si","newinfo",$script);7.以Apache模块的方式安装PHP,在文件http.conf中首先要用语句____动态装载PHP模块,然后再用语句____使得Apache把所有扩展名为php的文件都作为PHP脚本处理。LoadModulephp5_module"c:/php/php5apache2.dll",AddTypeapplication/x-httpd-php.php,8.语句include和require都能把另外一个文件包含到当前文件中,它们的区别是____;为了避免多次包含同一文件,可以用语句__require_once||include_once__来代替它们。9.类的属性可以序列化后保存到session中,从而以后可以恢复整个类,这要用到的函数是____。10.一个函数的参数不能是对变量的引用,除非在php.ini中把__allow_call_time_pass_referenceboolean__设为on. 11.SQL中LEFTJOIN的含义是__自然左外链接__。如果tbl_user记录了学生的姓名(name)和学号(ID),tbl_score记录了学生(有的学生考试以后被开除了,没有其记录)的学号(ID)和考试成绩(score)以及考试科目(subject),要想打印出各个学生姓名及对应的的各科总成绩,则可以用SQL语句____。12.在PHP中,heredoc是一种特殊的字符串,它的结束标志必须____。编程题:13.写一个函数,能够遍历一个文件夹下的所有文件和子文件夹。答:functionmy_scandir($dir){$files=array();if($handle=opendir($dir)){while(($file=readdir($handle))!==false){if($file!=".."&&$file!="."){if(is_dir($dir."/".$file)){$files[$file]=scandir($dir."/".$file);}else{$files[]=$file;}}}closedir($handle);return$files;}} 14.简述论坛中无限分类的实现原理。答:query($sql);while($rows=$DB->fetch_array($result)){$category_array[$rows[categoryParentID]][$rows[categoryID]]=array('id'=>$rows[categoryID],'parent'=>$rows[categoryParentID],'name'=>$rows[categoryName]);}if(!isset($category_array[$category_id])){return"";}foreach($category_array[$category_id]AS$key=>$category){if($category['id']==$default_category){echo"0){echo">".str_repeat("",$level)."".$category['name']." "; }else{echo">".$category['name']." ";}Get_Category($key,$level+1,$default_category);}unset($category_array[$category_id]);}/*函数返回的数组格式如下所示:Array([1]=>Array([id]=>1[name]=>一级类别[level]=>0[ParentID]=>0)[4]=>Array([id]=>4[name]=>二级类别[level]=>1[ParentID]=>1)[9]=>Array([id]=>9[name]=>哈哈[level]=>2[ParentID]=>4)[3]=>Array([id]=>3[name]=>二级类别[level]=>1[ParentID]=>1)[8]=>Array([id]=>8[name]=>aqqqqqd[level]=>2[ParentID]=>3)[2]=>Array([id]=>2[name]=>二级类别[level]=>1[ParentID]=>1)[7]=>Array([id]=>7[name]=>234234[level]=>2[ParentID]=>2)[6]=>Array([id]=>6[name]=>333332[level]=>2[ParentID]=>2)[5]=>Array([id]=>5[name]=>三级类别[level]=>2 [ParentID]=>2)[10]=>Array([id]=>10[name]=>66333666[level]=>3[ParentID]=>5))*///指定分类id,然后返回数组functionCategory_array($category_id=0,$level=0){global$DB;$sql="SELECT*FROMcategoryORDERBYcategoryIDDESC";$result=$DB->query($sql);while($rows=$DB->fetch_array($result)){$category_array[$rows['categoryParentID']][$rows['categoryID']]=$rows;}foreach($category_arrayAS$key=>$val){if($key==$category_id){foreach($valAS$k=>$v){$options[$k]=array('id'=>$v['categoryID'],'name'=>$v['categoryName'],'level'=>$level,'ParentID'=>$v['categoryParentID']);$children=Category_array($k,$level+1); if(count($children)>0){$options=$options+$children;}}}}unset($category_array[$category_id]);return$options;}?>array('1'=>array('id'=>1,'parent'=>0,'name'=>'1111'),'2'=>array('id'=>2,'parent'=>0,'name'=>'2222'), '4'=>array('id'=>4,'parent'=>0,'name'=>'4444')),'1'=>array('3'=>array('id'=>3,'parent'=>1,'name'=>'333333'),'5'=>array('id'=>5,'parent'=>1,'name'=>'555555')),'3'=>array('6'=>array('id'=>6,'parent'=>3,'name'=>'66666'),'7'=>array('id'=>7,'parent'=>3,'name'=>'77777')),'4'=>array('8'=>array('id'=>8,'parent'=>4,'name'=>'8888'),'9'=>array('id'=>9,'parent'=>4,'name'=>'9999')));if(!isset($arr[$category_id])){return"";}foreach($arr[$category_id]AS$key=>$cate){ if($cate['id']==$default_category){$txt="0){$txt1=">".str_repeat("-",$level)."".$cate['name']." ";}else{$txt1=">".$cate['name']." ";}$val=$txt.$txt1;echo$val;self::Get_Category($key,$level+1,$default_category);}}functiongetFlush($category_id=0,$level=0,$default_category=0){ob_start(); self::Get_Category($category_id,$level,$default_category);$out=ob_get_contents();ob_end_clean();return$out;}}$id=$_GET['id'];echo"";?>

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
关闭