作为一名开发者,我经常在面试中遇到各种技术问题。这篇文章整理了我对 HTTP 状态码、PHP 基础、设计模式等常见面试题的解答,旨在分享我的理解和实践经验,帮助大家更好地准备面试。内容涵盖从基础概念到实际应用,希望能为你的学习之路提供参考。

HTTP 返回状态值

问: 写出你能想到的所有 HTTP 返回状态值,并说明用途

答:

状态值用途
200成功
500服务器内部错误
401未经授权得访问
403禁止访问
404资源未找到
301永久重定向
302零时重定向
502从上游服务器接受到无效的响应

POST、GET 方式的区别

问: HTTP 中 POST、GET 方式的区别

答: GET 参数通过 URL 传递,POST 放在 Request body 中。GET 请求在 URL 中传送的参数是有长度限制的,而 POST 没有。GET 产生一个 TCP 数据包;POST 产生两个 TCP 数据包。

PHP 中双引号和单引号的区别

问: PHP 中双引号和单引号的区别

答: 单引号:PHP 当作纯字符串处理,不会解析字符串内包含的变量和字符转义。双引号:会解析字符串内包含的变量和字符转义。

PHP 各种打印的区别

问: echoprint_rprintvar_dump 之间的区别

答: echo 输出一个或者多个字符;
print 和 echo 一样,速度比 echo 慢,但是有返回值;
print_r 可以打印数组;
var_dump 可以打印数组,包括表达式的类型与值。

require 的异常错误

问: require 一个不存在的文件时,如何避免抛出异常错误

答: 可以先用 file_exists() 判断文件是否存在

单例模式

问: 写一段 PHP demo 代码实现单例模式

<?php
class DB {
    private static $obj = null;

    private function __construct(){}
    private function __clone(){}

    static function getInstance()
    {
        if(is_null(self::$obj)){
            self::$obj = new self();
        }
        return self::$obj;
    }
}

请描述一下 PHP 的自动加载机制

问: 请描述一下 PHP 的自动加载机制

答: 使用 spl_autoload_register() 函数和 PSR-4 规范 完成自动加载

Content-Type 设置

问: 发送 PSOT 请求时,application/x-www-form-urlencodedmultipart/form-data 有什么区别,如果需要发送 json 格式到后台,发送时 Content-Type 如何设置。

答: application/x-www-form-urlencoded:浏览器的原生表单的默认方式,multipart/form-data:使用表单上传文件时。

方案一:application/x-www-form-urlencoded。把 JSON 字符串作为 value 放在键值对里。

方案二:application/json。从 php://input 获取原始输入流转 JSON。

阐述下你对 MVC 的理解

问: 阐述下你对 MVC 的理解

答: 使用 MVC 的目的是将 M 和 V 的实现代码分离,从而使同一个程序可以使用不同的表现形式。

MySQL 慢查询

问: MySQL 查询慢有哪些原因?能否给出你的优化建议?为什么会有死锁?

答: 当事务试图以不同的顺序锁定资源时,就可能产生死锁。多个事务同时锁定同一个资源时也可能会产生死锁。

统计 40X 错误的 URL 总数

问: 如何使用 shell 脚本统计网站前一天出现 40X 错误的 URL 总数?

答: 大概的思路,就是读取访问日志。

谈谈你对消息列队的理解

问: 谈谈你对消息列队的理解?除了 redis 有用过哪些?

答: 消息列队的作用就是解耦、异步、削峰。

变量传递相关问题

问: 请在表格右侧写出执行每一行后每个变量的值,每行变量的值依赖上一行。

过程变量 1变量 2变量 3变量 4变量 5
$a=1;$b=2;$c=3;$d=4;$e=5$a$b$c$d$e
$b=&$a;11345
$b="30$a";301301345
$e=$c=($b++);3023023014301
$d=($c>$b)?($a+=2):(--$b);301301301301301
$e=implode(',',[$c,$e]);301301301301301,301

算法优化题

问: 优化题:有一序列1,1,2,3,5,8,13,21…… 研究规律后有了下列的算法来求第 N 位的值。指出这个递归的性能问题,请给出优化方案,仍然使用递归。

<?PHP
  function fun($n){
   if($n==1||$n==2){
      return 1;
    }
  return fun($n-1)+fun($n-2);
}

标签: 面试题

添加新评论