php面试题

1、谈谈对mvc的认识

 

 

 

2、sort()、assort()、和 ksort() 有什么分别?它们分别在什么情况下使用?

sort(),根据数组中元素的值,以英文字母顺序排序,索引键会由0到n-1重新编号。【主要是当数组索引键的值无关紧要时用来把数组排序。】

assort(),PHP没有assort()函式,所以可能是asort()的笔误。asort(),对数组进行排序,数组的索引保持和单元的关联。【主要用于对那些单元顺序很重要的结合数组进行排序。 】

ksort(),根据数组中索引键的值,以英文字母顺序排序,【特别适合用于希望把索引键排序的关联数组。】

 

3、请举例说明在你的开发过程中用什么方法来加快页面的加载速度

要用到服务器资源时才打开,及时关闭服务器资源,数据库添加索引,页面可生成静态,图片等大文件单独服务器。使用代码优化工具

 

 

4、一个函数的参数不能是对变量的引用,除非在php.ini中把____设为on.

allow_call_time_pass_reference boolean :是否启用在函数调用时强制参数被按照引用传递

 

5、PHP的意思

PHP(外文名:PHP: Hypertext Preprocessor,中文名:“超文本预处理器”)是一种通用开源脚本语言

PHP是一个基于服务端来创建动态网站的脚本语言,您可以用PHP和HTML生成网站主页

 

 

6、简述UCenter的单点登录机制

所谓单点登录,无非就是几个站点共用一个用户中心,实现同步登陆,同步退出。

其实最终还是用户去登录,只是采用了ajax (javascript利用src异步跨域调用)用户不会发现。

而且利用了p3p头实现了,不同域名,单点登录(ucenter用的cookie) 缺点就是采用ajax 客服端请求 ,如果有10个以上应用,登录速度就慢下来了。

 

 

7、些函式可以用来在现正执行的脚本中插入函式库?

对 这道题目不同的理解会有不同的答案,我的第一个想法是插入 PHP 函式库不外乎 include()、include_once()、require()、require_once(),但细心再想,“函式库”也应该包括 com 物件和 .net 函式库,所以我们的答案也要分别包括 com_load 和 dotnet_load,下次有人提起“函式库”的时候,别忘记这两个函式。

 

 

8、如何实现字符串翻转?

1、可以用php函数: strrev

2、自己写一个:

 1 function getRev($str,$encoding='utf-8'){
 2     $result = '';
 3     $len = mb_strlen($str);
 4     for($i=$len-1; $i>=0; $i--){
 5         $result .=mb_substr($str,$i,1,$encoding);
 6     }
 7     return $result;
 8 }
 9 $string = 'OK你是正确的Ole';
10 
11   echo getRev($string);

 

 

9、include 和 include_once 有什么分别?require 又如何?

 

 

10、写一个函数,尽可能高效的,从一个标准 url 里取出文件的扩展名

 

 1 //方法一:【高效】
 2 $url = "http://www.phpddt.com/abc/de/fg.php?id=1";
 3 $path = parse_url($url);
 4 echo pathinfo($path['path'],PATHINFO_EXTENSION);  //php
 5 
 6 
 7 //方法二:
 8 echo getExt($url);
 9 
10 function getExt($url){
11    $arr = parse_url($url);
12   
13    $file = basename($arr['path']);
14    $ext = explode(".",$file);
15    return $ext[1];
16 }

 

 

11、请写出数据类型(int char varchar datetime text)的意思; 请问varchar和char有什么区别

int是数字类型,

char固定长度字符串,

varchar实际长度字符串,

datetime日期时间型,

text文本字符串 char的场地固定为创建表设置的长度,

varchar为可变长度的字符。

 

12、求两个日期的差数,例如2007-2-5 ~ 2007-3-6 的日期差数

$begin=strtotime(“2007-2-5″);

$end=strtotime(“2007-3-6″);

echo ($end-$begin)/(24*3600);

 

13、如何不使用submit按钮来提交表单?

如果我们不想用submit按钮来提交表单,我们也可以用超链接来提交,我们可以这样写代码: <a href=”javascript: document.myform.submit();”>Submit Me</a>

 

14、如何修改SESSION的生存时间

1 方法1:将php.ini中的session.gc_maxlifetime设置为9999重启apache
2 方法2:$savePath = “./session_save_dir/”;
3 $lifeTime = 小时 * 秒;
4 session_save_path($savePath);
5 session_set_cookie_params($lifeTime);
6 session_start();
7 方法3:setcookie() and session_set_cookie_params($lifeTime);

 

15、防止SQL注入:

执行sql语句时使用addslashes进行sql语句转换 
Sql语句书写尽量不要省略小引号和单引号
提高数据库表和字段的命名技巧,对一些重要的字段根据程序的特点命名,取不易被猜到的。
开启配置文件中的magic_quotes_gpc和magic_quotes_runtime设置

 

16、下列HTTP状态码出现的可能原因, 如何处理

200
  请求已成功,请求所希望的响应头或数据体将随此响应返回。
301
404
   请求失败,请求所希望得到的资源未被在服务器上发现。没有信息能够告诉用户这个状况到底是暂时的还是永久的。假如服务器知道情况的话,应当使用410状 态码来告知旧资源因为某些内部的配置机制问题,已经永久的不可用,而且没有任何可以跳转的地址。404这个状态码被广泛应用于当服务器不想揭示到底为何请 求被拒绝或者没有其他适合的响应可用的情况下。
502
  作为网关或者代理工作的服务器尝试执行请求时,从上游服务器接收到无效的响应。
503
   由于临时的服务器维护或者过载,服务器当前无法处理请求。这个状况是临时的,并且将在一段时间以后恢复。如果能够预计延迟时间,那么响应中可以包含一个 Retry-After 头用以标明这个延迟时间。如果没有给出这个 Retry-After 信息,那么客户端应当以处理500响应的方式处理它。   注意:503状态码的存在并不意味着服务器在过载的时候必须使用它。某些服务器只不过是希望拒绝客户端的连接。
200 OK 一切正常,对GET和POST请求的应答文档跟在后面。
301 Moved Permanently 客户请求的文档在其他地方,新的URL在Location头中给出,浏览器应该自动地访问新的URL
404 Not Found 无法找到指定位置的资源。这也是一个常用的应答。
502 Bad Gateway 服务器作为网关或者代理时,为了完成请求访问下一个服务器,但该服务器返回了非法的应答。
503 Service Unavailable 服务器由于维护或者负载过重未能应答。例如,Servlet可能在数据库连接池已满的情况下返回503。服务器返回503时可以提供一个Retry-After头。

 

 

17、浅谈对mvc的认识并简单的介绍使用过的php框架并谈谈他们的优缺点?

 

 

 

 

18、session与cookie的区别?

session:储存用户访问的全局唯一变量,存储在服务器上的php指定的目录中的(session_dir)的位置进行的存放
cookie:用来存储连续訪問一个頁面时所使用,是存储在客户端,对于Cookie来说是存储在用户WIN的Temp目录中的。
两者都可通过时间来设置时间长短

 

 

19、计算某段字符串中某个字符出现的次数(例如 : gdfgfdgd59gmkblg 中 g 的次数)

 

1 $text = 'gdfgfdgd59gmkblg';
2 //方法一、
3 echo preg_match_all('/g/i',$text); 
4 //方法二、
5 echo substr_count($text,'g'); 

 

posted @ 2016-05-15 16:34  飞越全球  阅读(214)  评论(0编辑  收藏  举报