PHP中常见的面试题4(附答案)

2018-06-22 05:24:55来源:未知 阅读 ()

新老客户大回馈,云服务器低至5折

1. echo count(“abcd”);输出多少?

答案:1

 

2. 运行以下代码后$a $b $c 分别是?

<?php
    $a=$b=$c=0;
    $a=$b && $c;

答案:false、0、0

 

4. 请用php的heredoc语法格式输出:hello world!

<?php
      $v=”hello world”;
      $str=<<<EOT
      $v
EOT;
echo $str;

 

5. $string = "abcdefg",那么$string{4}的值是?

答案:e

 

6. 简述echo(),print(),print_r()的区别。

答案:echo()可以一次输出多个值,多个值之间用逗号分隔。echo是语言结构,而不是真正的函数,因此不能作为表达式的一部分使用。

           print()是一个函数,用来打印一个值,如果字符串成功显示则返回true,否则返回false

           print_r()是一个函数,用来打印一个值,值为字符串或数字进行简单打印,而数组则以括起来的键和值列表形式显示,并以Array开头。

拓展:var_dump()是一个函数,用来显示关于一个或多个表达式的结果信息,包括表达式的类型与值。数组将递归展开值,通过缩进显示其结构。

 

7.用PHP写出显示客户端IP与服务器IP的代码。

客户端IP:echo $_SERVER[‘REMOTE_ADDR’];

或者echo getenv(‘REMOTE_ADDR’);

服务器IP:echo $_SERVER[‘SERVER_ADDR’];

或者echo getenv(‘SERVER_ADDR’);

 

8、用正则表达式判断$a是否是一个以半角逗号分隔的多个手机号码组成的字符串,是输出yes

<?php
      $math=“/((\d){11},)+/”;
      $str=”12345678901,12345678901”;
      if(preg_match($match,$str)){
        echo ‘yes’;
    }
?>  

 

9. 请定义一个名为MyClass的类,这个类只有一个静态方法justDoIt。

class MyClass
{
      public static function justDoIt()
      {

      }
}

 

11. 写出你知道的几种设计模式,并用php代码实现其中一种。

答案:单态模式、工厂模式、生成器模式、代理模式、迭代模式
单态模式举例:
class test{
      private static $obj=null;
      private function __construct(){
            echo ‘第一次连接数据库’;
    }
 
    public static function getInstance(){
           if(is_null(self::$obj)){
               self::$obj=new self();
               return self::$obj;
         }
     }
}

 

 

12. 打开php.ini中的Safe_mode,会影响哪些函数?

答案: chown()、chgrp()、chdir()、fopen()、rmdir()、copy()、link()、exec()

 

 

 

13. 请描述如下URL重写规则的用意。

<IfModule mod_rewrite.c>

      RewriteEngine on

      RewriteCond %{REQUEST_FILENAME} !-f

      RewriteCond %{REQUEST_FILENAME} !-d

      RewriteBase /

      RewriteRule . /index.php [L]

</IfModule>

答案:将URL地址强制解析为./index.php

 

14. 你会用哪个函数设置当前内容的Content-Type?

header函数

       //定义编码

       header(“Content-type:text/html;charset=utf-8”);

       //CSS

       header(“Content-type:text/css”);

       //JavaScript

       header(“Content-type:text/javascript”);

       //JPEG Image

       header(“Content-type:image/jpeg”);

       //GIF Image

       header(“Content-type:image/gif”);

       //PNG Image

       header(“Content-type:image/png”);

       //JSON

       header(“Content-type:application/json”);

       //PDF

       header(“Content-type:application/pdf”);

       //XML

       header(“Content-type:text/xml”);

       //ok

       header(“HTTP/1.1 200 OK”);

       //404

       header(‘HTTP/1.1 404 Not Found’);

       //设置地址被永久的重定向

       header(‘HTTP/1.1 301 Moved Permanently’);

       //转到一个新地址

       header(‘Location:http://www.example.org/’);

       //文件延迟转向

       header(‘Refresh:10;url=http://www.example.org/’);

       print ‘You will be redirected in 10 seconds’;

       //纯文本格式

       header(‘Content-type:text/plain’);

 

15. Warning: Cannot modify header information - headers already sent by (output started at D:\src\init.php:7) in D:\src\init.php on line 10 通常什么情况下php会报该警告信息?

答案:header(‘Content-type:text/html;charset=utf-8’)头之前有任何输出均会出现如下错误。

 

16. A通过页面输入用户名abc和密码123登录到www.10086.cn,请写出该次请求的HTTP协议报文(包括请求行、消息报头、请求正文)。

答案:

Post  /login  HTTP/1.1

============

host: www.10086.cn

Content-Type: application/x-www-form-urlencoded

User-Agent: Mozilla/5.0(Windows;U;Windows NT 5.1;en-US;rv:1.7.6)

Content-length: 25

Refer: www.10086.cn

============

Username=abc&password=123

 

17. 写一段php代码遍历某个目录下的所有文件和子文件夹。

<?php
      function scandir($path){
        $files = array();
        $handle = opendir($path);
        if ($filename=@readdir($handle)) {
            if ($filename==’.’ || $filename==’..’) {
                continue;
            }
            if (is_dir($filename)){
                $files[$filename] = scandir($path.’/’.$filename);
       } else {
            $files[$filename] = $filename;
       }
      }
        return $files;
   }
?>

 

 

18. 查看磁盘空间使用率的linux命令是什么?查看有哪些系统进程正在运行命令是什么?监测linux性能(cpu,磁盘io,内存,网络等)都用到哪些命令?

答案:df、ps、top

 

19. linux下终止一个进程用什么命令?打包压缩和解包用什么命令?建立软连接的命令是?

答案:

     pkill -9 进程名或kill 进程号、

     tar zcvf和tar zxvf 

     ln 

 

20. 如果要求每隔5分钟执行一次脚本five.php,如何实现?

答案:crontab –e

 */5 * * * *  php  five.php

 

21. mysql中varchar的最大长度是多少?用什么类型的字段存储大文本?date和datetime和timestamp什么区别?怎么看数据库中有哪些sql正在执行?

答案:

65535

text

区别:

1. 存储空间不同

a) TIMESTAMP占用4个字节

b) DATETIME占用8个字节

2. 受时区影响

a) TIMESTAMP实际记录的是1970-01-01 00:00:01到现在的数,受时区影响

b) DATETIME不受时区影响

3. 时间范围不同

a) TIMESTAMP的时间范围是:'1970-01-01 00:00:01' UTC ~ '2038-01-19 03:14:07' UTC

b) DATETIME的时间范围是:'1000-01-01 00:00:00' ~ '9999-12-31 23:59:59'

4. 自动更新

TIMESTAMP类型在默认情况下,insert、update 数据时,TIMESTAMP列会自动以当前时间(CURRENT_TIMESTAMP)填充/更新。

 

show processlist;

 

22. MySQL数据库的一个表:User

Name Tel Content Date

张三 13333663366 大专毕业 2006-10-11

张三 13612312331 本科毕业 2006-10-15

张四 021-55665566 中专毕业 2006-10-15

 

写出如下操作的SQL语句:

(a) 有一新记录(小王 13254748547 高中毕业 2007-05-06)请用SQL语句新增至表中

(b) 请用sql语句把张三的时间更新成为当前系统时间

(c) 请写出删除名为张四的全部记录

答案:

(a)inser into User(Name,Tel,Content,Date) values(“小王”,12354748547,”高中毕业”,”2007-05-06”);

(b)update User set Date=date(now()) where User=”张三”;

(c)delete from User where User=”张三”;

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:PHP腾讯与百度坐标转换

下一篇:laravel5.4生成验证码