php开发工程师基础面试题

分类: 互联网 > 面试题

1. 在PHP中,

当前脚本的名称(不包括路径和查询字符串)记录在预定义变量:$_SERVER['PHP_SELF']

链接到当前页面的的前一页面URL记录在预定义变量:$_SERVER['HTTP_REFERER']

前执行脚本的绝对路径:$_SERVER['SCRIPT_FILENAME']

正在浏览当前页面用户的IP地址:$_SERVER['REMOTE_ADDR']

查询(query)的字符串:$_SERVER['QUERY_STRING']

当前运行脚本所在的文档根目录:$_SERVER['DOCUMENT_ROOT']

 

2. 执行程序段将输出:

echo 8 % (-2); //0

echo -8 % 3; //-2

echo 8 % (-3); //2

 

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

     401表示未授权

     header('HTTP/1.0 404 Not Found');

 

4. 数组函数arsort的作用:对数组进行逆向排序并保持索引关系

error_reporting(2047):报告所有的错误和警告

 

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

<?php
$a="<script type='text/javascript'>XXXXXXXXXXXXXXX</script>";
echo preg_replace('/\<script[^>]*?>.*<\/script\>/is','',$a);

 

6. 以Apache模块的方式安装PHP,在文件http.conf中首先要用语句____动态装载PHP模块

然后再用语句____使得Apache把所有扩展名为php的文件都作为PHP脚本处理。

     LoadModule php5_module "c:/php/php5apache2.dll";

     AddType application/x-httpd-php .php

 

7. 语句 include 和 require 的区别?避免多次引用的函数?

     在处理失败时,include()产生一个警告而require()产生致命错误

     require_once() include_once()

 

8. 一个函数的参数不能对变量的引用,需要php.ini怎么配置

     allow_call_time_pass_reference = on

 

9. 在PHP中,heredoc是一种特殊的字符串,它的结束标志必须?

     有与开始标识符一样的字符串,并且结束标识符所在的行不能包含任何其他字符(除;和结束标识符)

 

10. 写一个函数,能够遍历一个文件夹下的所有文件和子文件夹。

     <?php
     function listDir($dir) {
          if (is_dir($dir)) {
               $files = array();
               if ($handle = opendir($dir)) {
                    while(($file = readdir($handle)) !== false) {
                         if ($file != '.' || $file != '..') {
                              $f = $dir . '/' . $file;
                              if (is_dir($f)) {
                                   $files[$file] = listDir($f);
                              } else {
                                   $files[] = $f;
                              }
                         }
                    }
               }
               fclose($dir);
               return $files;
          } else {
               return $dir;
          }
     }

 

11. 类的属性可以序列化后保存呢在session中,从而以后可以恢复整个类,这要用到的函数是:

     serialize() / unserialize()

 

12. 优化MySQL数据库的方法:

     1. 数据库设计方面,设计结构良好的数据库,允许部分数据冗余,避免join操作,以提高查询效率,添加适当的索引

     2. 系统架构设计方面,表散列,把海量数据散列到几个不同的表里面,快慢表,快表只保留最新数据,慢表示历史存档,数据库读写分离

     3. 写高效的SQL语句

     4. 必要的时候用不同的存储引擎

 

13. 不用新变量直接交换现有两个变量的值:

     1. 字符串:list($a, $b) = array($b, $a);

     2. 整型:$a = $a + $b; $b = $a - $b; $a = $a - $b;

 

14.

  1. mysql_fetch_row():函数从结果集中取得一行作为数字数组

  2. mysql_fetch_assoc():函数从结果集中取得一行作为关联数组

  3. mysql_fetch_array():函数从结果集中取得一行作为关联数组或数组数组,二者都有返回

来源:原创 发布时间:2020-11-28 21:11:50