Heim >php教程 >php手册 >大公司的PHP面试题,公司PHP面试题

大公司的PHP面试题,公司PHP面试题

WBOY
WBOYOriginal
2016-06-13 09:23:131397Durchsuche

大公司的PHP面试题,公司PHP面试题

1. 禁用COOKIE 后 SEESION 还能用吗?

2. 抓取远程图片到本地,你会用什么函数?

4. 你觉得在pV10W的时候, 同等配置下,LUNIX 比WIN快多少?

5. 简述pOST 和GET传输的最大容量分别是多少?

6. 用最少的代码写一个求3值最大值的函数.

附部分答案(不保证是正确的解)

1. 不能
2 fsockopen

4 (不做优化的情况下一样)
5 2MB,1024B
6 function($a,$b,$c){
return $a>$b? ($a>$c? $a : $c) : ($b>$c? $b : $c );
}

———————————————————————————–

大公司的pHp面试题

2. 求两个日期的差数,例如2007-2-5 ~ 2007-3-6 的日期差数
$begin=strtotime(‘2007-2-5′);
$end=strtotime(‘2007-3-6′);
echo ($end-$begin)/(24*3600);

3. 请写一个函数,实现以下功能:
字符串“open_door” 转换成 “OpenDoor”、”make_by_id” 转换成 ”MakeById”。
function str_change($str) {
$str = str_replace ( “_”, ” “, $str );
$str = ucwords ( $str );
$str = str_replace ( ” “, “”, $str );
return $str; }

4. 要求写一段程序,实现以下数组$arr1转换成数组$arr2:
$arr1 = array (
‘0′ => array (‘fid’ => 1, ‘tid’ => 1, ‘name’ =>’Name1′ ),
‘1′ => array (‘fid’ => 1, ‘tid’ => 2 , ‘name’ =>’Name2′ ),
‘2′ => array (‘fid’ => 1, ‘tid’ => 5 , ‘name’ =>’Name3′ ),
‘3′ => array (‘fid’ => 1, ‘tid’ => 7 , ‘name’ =>’Name4′ ),
‘4′ => array (‘fid’ => 3, ‘tid’ => 9, ‘name’ =>’Name5′ )
);
$arr2 = array (
‘0′ => array (
‘0′ => array ( ‘tid’ => 1, ‘name’ => ‘Name1′),
‘1′ => array ( ‘tid’ => 2, ‘name’ => ‘Name2′),
‘2′ => array ( ‘tid’ => 5, ‘name’ => ‘Name3′),
‘3′ => array ( ‘tid’ => 7, ‘name’ => ‘Name4′) ),
‘1′ => array (
‘0′ => array ( ‘tid’ => 9, ‘name’ => ‘Name5′ ) ) );

$arr1 = array (
‘0′ => array (‘fid’ => 1, ‘tid’ => 1, ‘name’ =>’Name1′ ),
‘1′ => array (‘fid’ => 1, ‘tid’ => 2 , ‘name’ =>’Name2′ ),
‘2′ => array (‘fid’ => 1, ‘tid’ => 5 , ‘name’ =>’Name3′ ),
‘3′ => array (‘fid’ => 1, ‘tid’ => 7 , ‘name’ =>’Name4′ ),
‘4′ => array (‘fid’ => 3, ‘tid’ => 9, ‘name’ =>’Name5′ )
);
function changeArrayStyle($arr){
foreach($arr as $key=>$value){
$result[$value[\fid\]][]=$value;
}
return array_values($result);
}
$arr2=changeArrayStyle($arr1);
echo “

”;<br>var_dump($arr2);<br>?>
<p>5. 请简述数据库设计的范式及应用。<br>一般第3范式就足以,用于表结构的优化,这样做既可以避免应用程序过于复杂同时也避免了SQL语句过于庞大所造成系统效率低下。<br>ANSWER:<br>第一范式:若关系模式R的每一个属性是不可再分解的,再属于第一范式。<br>第二范式:若R属于第一范式,且所有的非码属性都完全函数依赖于码属性,则为第二范式。<br>第三范式:若R属于第二范式,且所有的非码属性没有一个是传递函数依赖于候选码,则属于第三范式。</p>
<p>6.一个表中的Id有多个记录,把所有这个id的记录查出来,并显示共有多少条记录数,用SQL语句及视图、存储过程分别实现。<br>存储过程:<br>DELIMITER //<br>create procedure proc_countNum(in columnId int,out rowsNo int)<br>begin<br>select count(*) into rowsNo from member where member_id=columnId;<br>end<br>call proc_countNum(1,@no);<br>select @no;</p>
<p>视图:<br>create view v_countNum as select member_id,count(*) as countNum from member group by member_id<br>select countNum from v_countNum where member_id=1</p>
<p>7 表中有A B C三列,用SQL语句实现:当A列大于B列时选择A列否则选择B列,当B列大于C列时选择B列否则选择C列。<br>select<br>case<br>when first_name>middle_name then<br>case when first_name>last_name then first_name<br>else last_name end<br>else<br>case when middle_name>last_name then middle_name else last_name<br>end<br>end as name<br>from member</p>
<p>8请简述项目中优化sql语句执行效率的方法,从哪些方面,sql语句性能如何分析?<br>sql优化有鸟用,不如直接加索引。</p>
<p>9 如果模板是用smarty模板。怎样用section语句来显示一个名为$data的数组。比如:<br>$data = array(<br>[0] => array( [id]=8 [name]=’name1′)<br>[1] => array( [id]=10 [name]=’name2′)<br>[2] => array( [id]=15 [name]=’name3′)<br>……<br>)<br>写出在模板页的代码? 若用foreach语句又要怎样显示呢?<br>{section name=loop loop=$data}<br>{$data[loop].id}<br>{$data[loop].name}<br>{/section}</p>
<p>{foreach from=$data item=id key=k}<br>{$k} – {$id}<br>{/foreach}</p>
<p>10 写一个函数,能够遍历一个文件夹下的所有文件和子文件夹。(目录操作)<br><?php <br />$d = dir(dirname(__file__));<br>//echo “Handle: ” . $d->handle . “\\n”;<br>//echo “path: ” . $d->path . “\\n”;<br>while ( false !== ($entry = $d->read ()) ) {<br>echo $entry . “<br>”;<br>}<br>$d->close ();<br>?><br>11 两张表 city表和province表。分别为城市与省份的关系表。<br>city:<br>id City provinceid<br>1 广州 1<br>2 深圳 1<br>3 惠州 1<br>4 长沙 2<br>5 武汉 3<br>………. 广州<br>province:<br>id province<br>1 广东<br>2 湖南<br>3 湖北<br>……….<br>(1) 写一条sql语句关系两个表,实现:显示城市的基本信息。?<br>(2) 显示字段:城市id ,城市名, 所属省份 。<br>如:<br>Id(城市id) Cityname(城市名) privence(所属省份)<br>。。。。。。。。。<br>。。。。。。。。。<br>(2)如果要统计每个省份有多少个城市,请用group by 查询出来。?<br>显示字段:省份id ,省份名,包含多少个城市。<br>ANSWER:<br>1.select A.id,A.Cityname,B.province from city A,province B where A.provinceid=B.id<br>2.select B.id,B.province,count(*) as num from city A,province B where A.provinceid=B.id group by B.id<br>12. 按照你的经验请简述软件工程进行软件开发的步骤。以下工具Rational Rose、powerDesigner、project、VSS或CVS、TestDirector使用过那种,有缺点是什么?<br>公司用dbdesigner及cvs,测试管理工具用的是Mantis<br>13. 请简述操作系统的线程与进程的区别。列举LINUX下面你使用过的软件?</p>
<p>14. 请使用伪语言结合数据结构冒泡排序法对以下一组数据进行排序 10 2 36 14 10 25 23 85 99 45。</p>
<p>$a = array(10,2,36,14,10,25,23,85,99,45);<br>for($j=0 ; $jfor($i=0 ; $iif($a[$i] > $a[$i+1]) {<br>$t = $a[$i] ;<br>$a[$i] = $a[$i+1] ;<br>$a[$i+1] = $t ; }<br>echo var_dump($a);<br>—————————————————————————–</p>
<p>—————————————————————————–</p>
<p>—————————————————————————–</p>
<p>新浪php工程师面试题 收藏<br>1、COOKIE、SESSION的联系和区别,多台web服务器如何共享SESSION?<br>2、HTTp协议中的pOST和GET有何区别?<br>3、一段php代码,写出输出结果:<br>/**** 这个程序****/<br>$a=0;<br>$b=0;<br>if(($a=3)>0||($b=3)>0){<br>$a++;<br>$b++;<br>echo $a ;<br>echo $b; //输出b的值 ($a=4 ,$b=1) $b=3没有执行<br>}<br>4、reqiure的include都可包含文件,二者的区别何在?</p>
<p>5、php中WEB上传文件的原理是什么,如何限制上传文件的大小?<br>is_uploaded_file() 和 move_uploaded_file()</p>
<p>6、写一个函数,可以遍历文件夹下的所有文件和文件夹.<br>7、8、中间有几个unix shell的题目(好像是两个),因为不懂,不记得这些题目了<br>9、有mail.log的一个文档,内容为若干邮件地址,其中用’\\n’将邮件地址分隔。要求从中挑选出sina.com的邮件地址(包括从文件读取、过滤到列印出来)。<br>mail.log内容如下:<br>james@sina.com.cn<br>jack@163.com<br>zhansan@sohu.com<br>lisi@hotmail.com<br>wangwu@gmail.com</p>
<p>10、js中网页前进和后退的代码 ( 前进: history.forward();=history.go(1); 后退: history.back();=history.go(-1); )<br>11、window(A)中用window.open()打开了window(B),如何从窗口B调用窗口A中的内容?A、B仅仅是窗口的代号,不是窗口名字<br>12、了解ajax吗?用过吗?……<br>13、什么是MVC?用过吗?使用时遇到了什么问题,怎么解决的?<br>14.写出 访问 http://www.sina.com.cn 所需的报文头,嘿嘿,这是超级猪自己想起来地。md5_file()</p>
<p>—————————————————————————–</p>
<p>—————————————————————————–</p>
<p>—————————————————————————–</p>
<p>最新的新浪pHp面试题(2009.3)</p>
<p>1. echo count(“abc”); 输出什么?<br>答案:1</p>
<p>2. 用pHp写出显示客户端Ip与服务器Ip的代码<br>答案:客户端 getenv(‘REMOTE_ADDR’);<br>服务器端 getenv(‘SERVER_ADDR’); // gethostbyname(“www.baidu.com”);</p>
<p>3. error_reporting(2047)什么作用?<br>答案:相当于 error_reporting(‘E_ALL’); 输出所有的错误</p>
<p>4.如何实现pHp、JSp交互?</p>
<p>题目有点含糊不清,SOAp,XML_RpC,Socket function,CURL都可以实现这些,如果是考pHp和Java的整合,pHp内置了这种机制(如果考pHp和.NET的整合,也可以这么回答), 例如$foo = new Java(‘java.lang.System’);</p>
<p>5. 打开php.ini中的Safe_mode,会影响哪些参数?至少说出6个。<br>答案:此模块打开时,php将检查当前脚本的拥有者是否和被操作文件的拥有者相同,因此,将影响文件操作类函数,程序执行函数(program Execution Functions)。这些函数有.pathinfo,basename,fopen,system,exec,proc_open 等函数;</p>
<p>7. 请写一个函数验证电子邮件的格式是否正确(要求使用正则)<br>function checkEmail($mail){</p>
<p>$reg = ‘/^\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*$/’;<br>$rst = preg_match($reg , $mail);<br>if($rst){<br>return TRUE;<br>}else {<br>return FALSE;<br>}<br>}</p>
<p>11. 写个函数用来对二维数组排序。<br>array_multisort()</p>
<p>12. 写5个不同的自己的函数,来截取一个全路径的文件的扩展名,允许封装php库中已有的函数。</p>
<p>13. 一群猴子排成一圈,按1,2,…,n依次编号。然后从第1只开始数,数到第m只,把它踢出圈,从它后面再开始数,再数到第m只,在把它踢出去…,如此不停 的进行下去,直到最后只剩下一只猴子为止,那只猴子就叫做大王。要求编程模拟此过程,输入m、n, 输出最后那个大王的编号</p>
<p>7、优化MYSQL数据库的方法。</p>
<p>(1).数据库设计方面,这是DBA和Architect的责任,设计结构良好的数据库,必要的时候,去正规化(英文是这个:denormalize,中文翻译成啥我不知道),允许部分数据冗余,避免JOIN操作,以提高查询效率<br>(2).系统架构设计方面,表散列,把海量数据散列到几个不同的表里面.快慢表,快表只留最新数据,慢表是历史存档.集群,主服务器Read & write,从服务器read only,或者N台服务器,各机器互为Master<br>(3).(1)和(2)超越pHp programmer的要求了,会更好,不会没关系.检查有没有少加索引<br>(4).写高效的SQL语句,看看有没有写低效的SQL语句,比如生成笛卡尔积的全连接啊,大量的Group By和order by,没有limit等等.必要的时候,把数据库逻辑封装到DBMS端的存储过程里面.缓存查询结果,explain每一个sql语句<br>(5).所得皆必须,只从数据库取必需的数据,比如查询某篇文章的评论数,select count(*) … where article_id = ? 就可以了,不要先select * … where article_id = ?然后msql_num_rows.<br>只传送必须的SQL语句,比如修改文章的时候,如果用户只修改了标题,那就… set title = ? where article_id = ?不要set content = ?(大文本)<br>(6).必要的时候用不同的存储引擎.比如InnoDB可以减少死锁.HEAp可以提高一个数量级的查询速度</p>
<p>————————————————————————</p>
<p><?php <br />$s = ‘abc’;<br>if ($s==0)<br>echo ‘is zero<br>’;<br>else<br>echo ‘is not zero<br>’;<br>?></p>
<p>好多人答错了,认为答案是输出字符串“is not zero”。其实正确答案应该是输出字符串“is zero”。</p>
<p>原因其实简单,因为 pHp 是一门弱类型的语言,它对变量没有“必须先定义再使用”的强制要求,变量的类型也是根据赋值的类型来灵活变化的。这一“灵活性”看似灵活,实际上埋下了错 误的隐患。虽然 $s = ‘abc’; 语句定义了变量 $s 为字符串类型,但因为 if ($s==0)语句中,$s 是和数字型常量比较,所以 $s 这时被隐含的转换成了数字型变量,其值是 0,所以 $s==0 比较的结果就为真。</p>
<p>犯这一类型错误的人一般是从 Java、C 等语言转到 pHp 开发的程序员,因为 Java、C 等语言是强类型语言,是不允许不同类型的变量和常量相互比较的,在这种情况下会报告语法错误。</p>
<p>其实 pHp 语言的开发者并不是没有注意到这类问题,在 pHp 语言里还有一个严格比较的运算符“===”,要求比较的双方必须类型一致,把上述 if ($s==0) 语句写为 if ($s===0) 就会避免前述错误的发生。</p>
<p>———————————————————————————–</p>
<p></p>
<p>$str=”cd”;</p>
<p>$$str=”hotdog”; //$cd</p>
<p>$$str.=”ok”;</p>
<p>echo $cd; //hotdogok</p>
<p>?></p>
<p>————————————————————————————–<br>9、 apache+mysql+php实现最大负载的方法<br>主要是配置文件的优化了,另外用linux跑要比用windows跑效果好一点。</p>
<p>mkdir创建目录 touch创建文件夹 修改权限chmod之类</p>
<p>51、请写出pHp5权限控制修饰符(3分)<br>private protected public</p>
<p>13、对于大流量的网站,您采用什么样的方法来解决访问量问题?(4分)<br>首先,确认服务器硬件是否足够支持当前的流量<br>其次,优化数据库访问。<br>第三,禁止外部的盗链。<br>第四,控制大文件的下载。<br>第五,使用不同主机分流主要流量<br>第六,使用流量分析统计软件。</p>
<p>htmlspecialchars() 函数把一些预定义的字符转换为 HTML 实体。</p>
<p>htmlentities() 函数把字符转换为 HTML 实体。(htmlentities( )的转义更为彻底。)<br>SQL注入是很容易避免的。正如第一章所提及的,你必须坚持 过滤输入和转义输出。———</p>
<p>microtime 返回当前时间戳, mktime()取得指定的时间戳</p>
<p>//本页地址,当前脚本的名称.<br>echo $_SERVER[\pHp_SELF\].”<br>”;<br>//链接到当前页面的前一页面的 URL 地址:<br>echo $_SERVER[\HTTp_REFERER\].”<br>”;</p>
<p>3.在HTTp 1.0中,状态码 401 的含义是(4);如果返回“找不到文件”的提示,则可用 header 函数,</p>
<p>其语句为(5)。<br>(4)未授权 (5) header(“HTTp/1.0 404 Not Found”);———找不到文件<br>header(“HTTp/1.1 403 Forbidden”);———不允许访问</p>
<p>7.以Apache模块的方式安装pHp,在文件http.conf中首先要用语句(10)动态装载pHp模块,<br>然后再用语句(11)使得Apache把所有扩展名为php的文件都作为pHp脚本处理。<br>(10) LoadModule php5_module “c:/php/php5apache2.dll”<br>(11) AddType application/x-httpd-php-source .phps<br>AddType application/x-httpd-php .php .php5 .php4 .php3 .phtml</p>
<p>9.类的属性可以序列化后保存到 session 中,从而以后可以恢复整个类,这要用到的函数是(14)。<br>serialize() /unserialize()</p>
<p>10.一个函数的参数不能是对变量的引用,除非在php.ini中把(15)设为on.<br>allow_call_time_pass_reference</p><p class="header2"><span class="icon i-relatedanswer"><h3>PHP程序员上机面试题(并附答案,回答好的加分)</h3></span></p><p class="best-replyer"></p>
<p class="ft p1">某大公司的PHP面试题<br><br>管理提醒: 本帖被 haowubai 执行取消置顶操作(2009-07-30) <br>1. 如何用php的环境变量得到一个网页地址的内容?ip地址又要怎样得到?<br>[php]<br>echo $_SERVER ['PHP_SELF'];<br>echo $_SERVER ['SERVER_ADDR'];<br>[/php]<br><br>2. 求两个日期的差数,例如2007-2-5 ~ 2007-3-6 的日期差数<br>[php]<br>$begin=strtotime('2007-2-5');<br>$end=strtotime('2007-3-6');<br>echo ($end-$begin)/(24*3600);<br>[/php]<br><br>3. 请写一个函数,实现以下功能:<br>字符串“open_door” 转换成 “OpenDoor”、”make_by_id” 转换成 ”MakeById”。<br>[php]<br>function changeStyle(& $str) {<br><br>/*$str = str_replace ( "_", " ", $str );<br>$str = ucwords ( $str );<br>$str = str_replace ( " ", "", $str );<br>return $str;*/<br><br>$arrStr=explode('_',$str);<br>foreach($arrStr as $key=>$value){<br>  $arrStr[$key]=strtoupper(substr($value,0,1)).substr($value,1);<br>}<br>return implode('',$arrStr);<br>}<br>$s = "open_door";<br>echo changeStyle ( $s );<br>[/php]<br><br>4. 要求写一段程序,实现以下数组$arr1转换成数组$arr2:<br>[php]$arr1 = array (<br>'0' => array ('fid' => 1, 'tid' => 1, 'name' =>'Name1' ),<br>'1' => array ('fid' => 1, 'tid' => 2 , 'name' =>'Name2' ),<br>'2' => array ('fid' => 1, 'tid' => 5 , 'name' =>'Name3' ),<br>'3' => array ('fid' => 1, 'tid' => 7 , 'name' =>'Name4' ),<br>'4' => array ('fid' => 3, 'tid' => 9, 'name' =>'Name5' ) <br>);<br>$arr2 = array......余下全文>><br>
  
</p><p class="header2"><span class="icon i-relatedanswer"><h3>php面试题一般是笔写还是电脑上回答卷子?</h3></span></p><p class="best-replyer"></p>
<p class="ft p1">笔试也没有手写的,都在电脑上操作。面试也就是问问基础知识,或者看看你以前的作品<br>
  </p>
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn