PHP面试题总结

来源:互联网 发布:单片机专家 编辑:程序博客网 时间:2024/05/15 18:42

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

cookie是保存在本地的,而seesion是保存在服务器上的。所以两者没有直接的关系,禁用cookieseesion依然可以用。


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

file_get_contents函数,ex

<?php 
$img = file_get_contents('http://www.baidu.com/img/baidu_logo.gif'); 
file_put_contents('1.gif',$img); 
echo '<img src="1.gif">'; 
?>

 

3.在HTTP 1.1中,状态码 401 的含义是(4);如果返回“找不到文件”的提示,则可用 header 函数,其语句为(5)。

答:(4)未授权 (5) header("HTTP/1.1 404 Not Found");

4.表中有A B C三列,SQL语句实现:当A列大于B列时选择A列否则选择B列,当B列大于C列时选择B列否则选择C列。

答:$sql = 'SELECT CASE WHEN A>B THEN A ELSE B END,

 case when B>C then B else C end From tomener';

5.以Apache模块的方式安装PHP,在文件http.conf中首先要用语句(10)动态装载PHP模块,然后再用语句(11)使得Apache把所有扩展名为php的文件都作为PHP脚本处理。

答:(10) LoadModule    php5_module    F:/php5/php5apache2.ddl

    (11) AddType application/x-httpd-php .php

6.优化MYSQL数据库的方法

1)选取最适用的字段类型

2)使用连接(JOIN)来代替子查询(Sub-Queries)

3)使用联合(UNION)来代替手动创建的临时表

4)使用索引,增加查询效率

5)根据sql语句和索引来跳转sql语句和索引,以达到最优的查询

6)优化查询语句,提高索引命中率

7)构造分库分表,提高数据库的存储和扩展能力

8)根据需要使用不同的存储引擎

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

  例如: http://www.sina.com.cn/abc/de/fg.php?id=1 需要取出 php 或 .php

 

$url = "http://www.sina.com.cn/abc/de/fg.php?id=1";

$arr = parse_url($url);

$pathArr = pathinfo($arr['path']);

print_r($pathArr['extension']);

 

  8.写一个函数,算出两个文件的相对路径

  如 $a = '/a/b/c/d/e.php';

  $b = '/a/b/12/34/c.php';

计算出 $b 相对于 $a 的相对路径应该是 http://www.cnblogs.com/12/34/c.php将添上

$a = '/a/b/c/d/e.php';

$b = '/a/b/12/34/c.php';

//获取path相对于conpath的相对路径

function sGetRelativePath($path, $conpath)

{

$pathArr = explode("/", $path);

$conpathArr = explode("/", $conpath);

$dismatchlen = 0;

for($i = 0; $i < count($pathArr); $i++)

{

if($conpathArr[$i] != $pathArr[$i])

{

$dismatchlen = count($pathArr) - $i;

$arrLeft = array_slice($pathArr, $i);

break;

}

}

$ret = str_repeat("../", $dismatchlen).implode("/", $arrLeft);

return $ret;

}

print_r(sGetRelativePath($b, $a)); 

9.写出数据类型(int char varchar datetime text)的意思;请问 varchar 和 char有什么区别? 
答: 
1、Int 整形 
2、Char字符型 
3、Varchar 可变长度字符型 
4、Datetime 时间日期内省 
5、Text 文本类型 
6、Varchar 是可变长度类型,占用的空间是字符串的长度+1,而char是固定长度字符串类型,定义了多少空间就占用多少空间。 

10.请写出数据类型(int char varchar datetime text)的意思;请问 varchar 和 char有什么区别? 
答: 
1、Int 整形 
2、Char字符型 
3、Varchar 可变长度字符型 
4、Datetime 时间日期内省 
5、Text 文本类型 
6、Varchar 是可变长度类型,占用的空间是字符串的长度+1,而char是固定长度字符串类型,定义了多少空间就占用多少空间。 

.数组函数 arsort 的作用是(6);语句 error_reporting(2047)的作用是(7)。

 

答:(6)对数组进行逆向排序并保持索引关系  (7)All errors and warnings

11.写出一个正则表达式,过虑网页上的所有JS/VBS脚本(即把标记及其内容都去掉):(9)。

答:/<[^>].*?>.*?<\/>/si

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

A.生成静态HTML

B.生成xml

C.可不用数据库的尽量不用数据库把变量参数存于文本.

D.用ZEND加速

13.PHP中传值和传引用、传地址的区别是什么?

答:传值是把实参的值赋值给行参 那么对行参的修改,不会影响实参的值
传地址 是传值的一种特殊方式,只是他传递的是地址,不是普通的如int 那么传地址以后,实参和行参都指向同一个对象

14.如何通过javascript判断一个窗口是否已经被屏蔽

答:获取open()的返回值,如果是null,就是屏蔽了

 

15.PHP遍历文件夹及子文件夹所有文件

<?php

 function traverse($path = '.') {

$current_dir = opendir($path);    //opendir()返回一个目录句柄,失败返回false

 while(($file = readdir($current_dir)) !== false) {    //readdir()返回打开目录句柄中的一个条目

$sub_dir = $path . DIRECTORY_SEPARATOR . $file;    //构建子目录路径

 if($file == '.' || $file == '..') {

 continue;

   } else if(is_dir($sub_dir)) {    //如果是目录,进行递归

echo 'Directory ' . $file . ':<br>';

traverse($sub_dir);

} else {    //如果是文件,直接输出

echo 'File in Directory ' . $path . ': ' . $file . '<br>';

   }

}

}            

 traverse("E:\www\happylou");

?>

 

16,将1234567890转换成1,234,567,890 每3位用逗号隔开的形式

echo number_format('1234567890',2);

17,语句 include 和 require 都能把另外一个文件包含到当前文件中,它们的区别是(12);为了避免多次包含同一文件,可以用语句(13)来代替它们。

 

答:(12) 发生异常时include产生警告require产生致命错误  (13) require_once()/include_once()

18,使用五种以上方式获取一个文件的扩展名

要求:dir/upload.image.jpg,找出 .jpg 或者 jpg ,

 

答:使用五种以上方式获取一个文件的扩展名

1)get_ext1($file_name){

    return strrchr($file_name, '.');

}

2)get_ext2($file_name){

    return substr($file_name, strrpos($file_name, '.'));

}

3)get_ext3($file_name){

    return array_pop(explode('.', $file_name));

}

4)get_ext4($file_name){

    $p = pathinfo($file_name);

    return $p['extension'];

}

5)get_ext5($file_name){

    return strrev(substr(strrev($file_name), 0, strpos(strrev($file_name), '.')));

}

 

 


0 0