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');