php基础面试题:

1:print、print_r、echo到底有什么区别?

2:get和post的区别

echo和print都可以做输出,不同的是,echo不是函数,没有返回值,而print是一个函数有返回值,所以相对而言如果只是输出 echo 会更快,而print_r通常用于打印变量的相关信息,通常在调试中使用。
print 是打印字符串
print_r 则是打印复合类型 如数组 对象


1》 get请求时:
GET请求的数据会附在URL之后;空格,转换为+,如果是中文/其他字符,则直接把字符串用BASE64加密,得出如:%E4%BD%A0%E5%A5%BD,其中%XX中的XX为该符号以16进制表示的ASCII。
POST把提交的数据则放置在是HTTP包的包体中。
2》GET是通过URL提交数据,那么GET可提交的数据量就跟URL的长度有直接关系了。而实际上,URL不存在参数上限的问题HTTP协议规范没有对URL长度进行限制。这个限制是特定的浏览器及服务器对它的限制。
IE对URL长度的限制是2083字节(2K+35)。
对于其他浏览器,如Netscape、FireFox等,理论上没有长度限制,其限制取决于操作系统的支持。
3》 POST的安全性要比GET的安全性高。
(1)登录页面有可能被浏览器缓存,
(2)其他人查看浏览器的历史纪录,那么别人就可以拿到你的账号和密码了,除此之外,使用GET提交数据还可能会造成Cross-site request forgery攻击。

3:HTTP头书写
header(“HTTp/1.0 404 Not Found”);———找不到文件

header(“HTTp/1.1 403 Forbidden”);———不允许访问

4:$a6 'null';

$a8 array(array());

echo empty($a6) ? 'true' 'false';

echo empty($a8) ? 'true' 'false';

都返回false

5:写出如下程序的输出结果

<?php
    $test 'aaaaaa';
    $abc = & $test;
    unset($test);
    echo $abc;
?>

输出:aaaaaa

6:

    $count = 5;
    function get_count(){
        static $count = 0;  //未用global声明,故是内部变量
        return $count++;
    }
    echo $count;
    ++$count;
    echo get_count();
    echo get_count();

 输出:

5

0

1

7:

$GLOBALS['var1'] = 5;
$var2 = 1;
function get_value(){
global $var2;
$var1 = 0;
return $var2++;
}
$res = get_value();
echo $res; //返回1
echo $var1; //返回5
echo $var2; //返回2

8:
function get_arr($arr){
unset($arr[0]);
}
$arr1 = array(1, 2);
$arr2 = array(1, 2);
get_arr(&$arr1);
get_arr($arr2);
echo count($arr1);
echo count($arr2);

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

二、算法题
1. 使用PHP描述冒泡排序和快速排序算法,对象可以是一个数组
2. 使用PHP描述顺序查找和二分查找(也叫做折半查找)算法,顺序查找必须考虑效率,对象可以是一个有序数组
3. 写一个二维数组排序算法函数,能够具有通用性,可以调用php内置函数



 

12、某内容管理系统:用户提交内容后,系统生成静态HTML页面;写出实现的基本思路,最好写出相关代码。
用户提交内容后,将内容加在最终页面模板上,然后另存为HTML页面(创建HTML页面,将内容和页面模板写入)。
代码:
$tpl->assign(‘vars’, $vars);
$static_html = = $tpl->fetch(‘tpl/index.html’); //Smarty的fetch方法
$fp = fopen(‘html/index.html’, ‘w’);

fwrite($fp, $static_html);

另一种 ob_start

createHtml.php

原文地址:https://www.cnblogs.com/Alight/p/5198248.html