跳转到主要内容
你行网

Main navigation

  • 首页
  • Drupal
  • 编程与开发
  • 数据库
  • 操作系统与应用
  • 服务器与运维
  • 社区
User account menu
  • 登录

面包屑

  1. 首页

PHP 经典面试题回答

由 hrs, 12 二月, 2025

一、基础语法

  1. echo、print、print_r 和 var_dump 的区别?

    • echo:输出一个或多个字符串,没有返回值。

    • print:输出一个字符串,返回值为 1。

    • print_r:打印变量的易读信息,适合数组和对象。

    • var_dump:输出变量的详细信息,包括类型和值,适合调试。

  2. 如何定义常量?常量和变量的区别?

    • 使用 define('CONST_NAME', value) 或 const CONST_NAME = value 定义常量。

    • 常量一旦定义不能修改,作用域全局;变量可以修改,作用域有限。

  3. == 和 === 的区别?

    • ==:只比较值,不比较类型。

    • ===:比较值和类型。

  4. 如何获取数组长度?如何遍历数组?

    • 使用 count($array) 获取长度。

    • 遍历数组:

      php
      复制
      foreach ($array as $key => $value) {
          echo "$key: $value";
      }
  5. PHP 中的超全局变量有哪些?

    • $_GET、$_POST、$_REQUEST、$_SESSION、$_COOKIE、$_SERVER、$_FILES、$_ENV。

  6. isset() 和 empty() 的区别?

    • isset():检查变量是否已声明且不为 null。

    • empty():检查变量是否为“空”(如 0、""、null、false 等)。

  7. include 和 require 的区别?

    • include:文件不存在时发出警告,脚本继续执行。

    • require:文件不存在时致命错误,脚本停止执行。


二、面向对象编程(OOP)

  1. 如何定义类和实例化对象?

    php
    复制
    class MyClass {}
    $obj = new MyClass();
  2. 构造函数和析构函数?

    • 构造函数:__construct(),对象创建时调用。

    • 析构函数:__destruct(),对象销毁时调用。

  3. 访问修饰符有哪些?

    • public:全局可访问。

    • protected:仅类和子类可访问。

    • private:仅类内部可访问。

  4. 什么是继承?

    • 子类继承父类的属性和方法:

      php
      复制
      class ParentClass {}
      class ChildClass extends ParentClass {}
  5. 接口和抽象类的区别?

    • 接口:定义方法签名,不能实现方法,支持多继承。

    • 抽象类:可以包含实现的方法,不能实例化。

  6. 命名空间的作用?

    • 解决命名冲突,组织代码:

      php
      复制
      namespace MyProject;
  7. trait 是什么?

    • 用于代码复用,可以在类中插入方法:

      php
      复制
      trait MyTrait {
          public function myMethod() {}
      }
      class MyClass {
          use MyTrait;
      }

三、数据库操作

  1. 如何连接 MySQL 数据库?

    php
    复制
    $conn = new mysqli('localhost', 'user', 'password', 'database');
  2. 如何防止 SQL 注入?

    • 使用预处理语句:

      php
      复制
      $stmt = $conn->prepare("SELECT * FROM users WHERE id = ?");
      $stmt->bind_param('i', $id);
  3. 如何执行 SQL 查询?

    php
    复制
    $result = $conn->query("SELECT * FROM users");
    while ($row = $result->fetch_assoc()) {}
  4. PDO 的优势?

    • 支持多种数据库,预处理语句防止 SQL 注入,面向对象接口。

  5. 如何实现 CRUD 操作?

    • 使用 INSERT、SELECT、UPDATE、DELETE 语句。

  6. 如何优化数据库查询?

    • 使用索引,避免 SELECT *,优化查询语句,缓存结果。


四、文件操作

  1. 如何读取和写入文件?

    php
    复制
    $content = file_get_contents('file.txt');
    file_put_contents('file.txt', 'Hello World');
  2. 如何判断文件是否存在?

    php
    复制
    if (file_exists('file.txt')) {}
  3. 如何上传文件?

    php
    复制
    move_uploaded_file($_FILES['file']['tmp_name'], 'uploads/'.$_FILES['file']['name']);
  4. 如何遍历目录?

    php
    复制
    foreach (scandir('directory') as $file) {}

五、安全性

  1. 如何防止 XSS?

    • 使用 htmlspecialchars() 转义输出。

  2. 如何防止 CSRF?

    • 使用 CSRF Token 验证。

  3. 如何加密密码?

    • 使用 password_hash() 和 password_verify()。

  4. 如何防止会话劫持?

    • 使用 session_regenerate_id(),设置 HttpOnly 和 Secure 标志。


六、性能优化

  1. 如何优化 PHP 代码?

    • 减少数据库查询,使用缓存,优化循环。

  2. 什么是 OpCache?

    • PHP 字节码缓存,减少脚本编译时间。

  3. 如何使用缓存?

    • 使用 Memcached 或 Redis 存储常用数据。


七、高级特性

  1. 什么是 Composer?

    • PHP 依赖管理工具。

  2. 什么是自动加载?

    • 使用 spl_autoload_register() 或 Composer 的 autoload。

  3. 异常处理机制?

    php
    复制
    try {
        throw new Exception('Error');
    } catch (Exception $e) {
        echo $e->getMessage();
    }
  4. PHP 7 和 PHP 8 的新特性?

    • PHP 7:性能提升,类型声明,返回类型声明。

    • PHP 8:JIT 编译器,联合类型,match 表达式。


八、编程题

  1. 判断回文字符串:

    php
    复制
    function isPalindrome($str) {
        return $str === strrev($str);
    }
  2. 数组去重:

    php
    复制
    $uniqueArray = array_unique($array);
  3. 单例模式:

    php
    复制
    class Singleton {
        private static $instance;
        private function __construct() {}
        public static function getInstance() {
            if (!self::$instance) {
                self::$instance = new self();
            }
            return self::$instance;
        }
    }
  4. 查询第 10 到第 20 条记录:

    sql
    复制
    SELECT * FROM table LIMIT 10 OFFSET 9;
  5. 统计单词出现次数:

    php
    复制
    $wordCount = array_count_values(str_word_count($fileContent, 1));

九、综合题

  1. 设计 MVC 框架:

    • Model:处理数据。

    • View:显示数据。

    • Controller:处理请求和逻辑。

  2. 用户登录和注册:

    • 使用表单提交数据,验证输入,加密密码,存储到数据库。

  3. RESTful API:

    • 使用 HTTP 方法(GET、POST、PUT、DELETE)实现 CRUD 操作。

  4. 购物车功能:

    • 使用 Session 或数据库存储购物车数据,实现添加、删除、更新操作。

  • 登录或注册以发表评论
内容类型分类
技术文章
文章归类
编程与开发

文章标签

  • php

评论

文章标签

Excel
CSS
ubuntu
php
vim
五笔
VPN
Linux
command
HTML
drupal 8
drupal 7
centos
composer
Mysql
模块(module)
drush
Drupal
JavaSrcipt
apache
英语
drupal 9
nerdtree
荔壳风
network
果树种植
surround
drupal10
SEO
主题(theme)
更多

相关文章

  • 因权限问题导致drupal cms 无法正常安装,那么该如何解决这个问题
  • kvm虚拟机启动失败:default网络未激活
  • ubuntu 安装kvm 虚拟机
  • 匿名函数(Anonymous Functions)详解
  • foreach 是 PHP 循环语句使用方法
  • implode() 函数的定义和用法
  • Drupal 11 主题制作教程
  • 检查 Composer 是否为官方源
  • 在 Drupal 中权重(Weight)是怎样排序的
  • 解决 Drupal 主题缺失问题
RSS源

友情链接 网站地图 版权信息 联系我们 网址导航 社区

Copyright © 2019 - 2021 你行网 版权所有  粤ICP备19072650号