文章目录 [+]
直接上面试题。
1.字符串"\r","\n","\t","\x20"分别代表什么?
答案如下:
\r”代表的含义是:在Linux、unix 中表示返回到当行的最开始位置,在Mac OS 中表示换行且返回到下一行的最开始位置,相当于Windows 里的 \n 的效果。
“\n”代表的含义是:在Windows 中表示换行且回到下一行的最开始位置。相当于Mac OS 里的 \r 的效果,在Linux、unix 中只表示换行,但不会回到下一行的开始位置。
“\t”所代表的含义是:键盘上的“TAB”键,跳格(移至下一列)。
“\x20”所代表的含义是:是32在ASCII表中16进制的表示。
2.以下语句会输出什么?
$a = 3; echo "$a",'$a',"\\\$a","${a}","$a" . "$a" ,"$a" + "$a"; \\输出结果如下:3 $a \$a 3 33 6
3.以下语句输出结果是什么?
setcookie('name', '猫巷'); echo $_COOKIE['name']; \\输出结果如下:猫巷
4.php中怎么将当前页面重定向到另一个页面。
header('location:http://www.lovyou.top');
5.什么是魔术引号(magic_quotes_gpc)
答案如下:魔术引号(Magic Quotes)是一个自动将进入 PHP 脚本的数据进行转义的过程。提示:最好在编码时不要转义而在运行时根据需要而转义。
在一个项目中,魔术引号若是打开的话,所有的反斜线(\)、单引号(')、双引号(")、NULL 字符都会被自动加上一个反斜线进行转义,这和 addslashes() 作用完全相同。
特别注意的是在PHP 5.4版本时,魔术引号被移除了,因此转义都需要加上addslashes函数。6.在类的方法中,如何调用父类的同名方法。
class father{ public function index(){ echo 'father.index'; } } class child extends father { public function index() { echo 'child.index and ::::::::' ; //调用父类的同名方法 parent::index(); } } (new child())->index();
7.php中如何取得get,post,和上传文件的参数。
答案如下:$_GET、$_POST、$_FILES;
8.如何取得客户端的ip,(要求取得一个int)
echo getenv('REMOTE_ADDR'); //获取客户端IP $ip = $_SERVER['REMOTE_ADDR']; //获取客户端IP $ip = ip2long($ip); //转换为int类型
9.include和require的区别。
10.extends的作用是什么?
11.@test()和&test()的区别。
答案如下:@屏蔽test()函数在执行中的警告提示;&test()引用test()函数。
12.请列举最少3个php对象的魔术方法和他们的用途。
答案如下:
__construct():构造方法
对象创建时运行。__destruct():析构方法
对象销毁时运行。__call():调用一个类的不可访问方法时使用。
__callStatic():静态调用一个类的不可访问方法时使用。
...
13.array+array与array_merge()的区别。
当键值为数字时:
$numArr1 = [ 0 => 0, 3 => 3 ]; $numArr2 = [ 1 => 1, 3 => 6, ]; echo '<pre>'; print_r($numArr1 + $numArr2); print_r(array_merge($numArr1, $numArr2)); //键值相同时,array+array只把最先出现的采用成最后的值,array_merge() 则是默认不会。
当键值为字符时:
$strArr1 = [ 'a' => 'a', 'b' => 'b' ]; $strArr2 = [ 'b' => 'BB', 'c' => 'c' ]; echo '<pre>'; print_r($strArr1 + $strArr2); print_r(array_merge($strArr1, $strArr2)); //键值相同时,array+array则还是将最先出现的采用成最后的值,array_merge() 则是后边的覆盖前边的。
14.什么是fpm。
答案如下:
PHP-FPM是一个PHP FastCGI管理器,是只用于PHP的,可以在 http://php-fpm.org/download 下载得到。
PHP-FPM提供了更好的PHP进程管理方式,可以有效控制内存和进程、可以平滑重载PHP配置。
15.描述一下php开发中常见到的几种攻击方法以及解决方案。
答案如下:
请异步到PHP网站常见安全漏洞以及防御方法。
16.echo intval(0.58 * 100) 输出的结果是57,试分析这是为什么?
答案如下:原因就是浮点数精度的问题。
简单的十进制分数如同 0.1 或 0.7 不能在不丢失一点点精度的情况下转换为内部二进制的格式。这就会造成混乱的结果:例如,floor((0.1+0.7)*10) 通常会返回 7 而不是预期中的 8,因为该结果内部的表示其实是类似 7.9999999999…。这和一个事实有关,那就是不可能精确的用有限位数表达某些十进制分数。例如,十进制的 1/3 变成了 0.3333333…。所以永远不要相信浮点数结果精确到了最后一位,也永远不要比较两个浮点数是否相等。如果确实需要更高的精度,应该使用任意精度数学函数或者 gmp 函数。17.PHP缓存技术有哪些?
1. 全页面静态化缓存:也就是将页面全部生成html静态页面,用户访问时直接访问的静态页面,而不会去走php服务器解析的流程
2. 页面部分缓存:将一个页面中不经常变的部分进行静态缓存,而经常变化的块不缓存,最后组装在一起显示
3. 数据缓存:通过一个id进行请求的数据,将数据缓存到一个php文件中,id和文件是对应的,下次通过这个id进行请求时直接读php文件
4. 查询缓存:和数据缓存差不多,根据查询语句进行缓存;
5. 内存式缓存:redis和memcache
发表评论