跳转到主要内容
你行网

Main navigation

  • 首页
  • 文章
  • 教程
  • 视频
  • 下载
  • 社区
  • 网站导航
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
  • 登录或注册以发表评论

评论

相关文章

PHP数据类型及其作用总结
php过滤器的作用和说明
php 会话使用方法
什么是PHPSTORM_META
php 数据类型和使用范围大小,和默认值
为什么session_start() 不用带参数
session_start(); 连接数据库前为什么要启用会话。
pdo连接方法和错误处理
PDO 和 MySQLi 连接数据库的区别
php的注释符号使用
类的自动加载是怎样去实现的。
一套框架的生命周期是多久
什么是类?
怎么实现一个静态化常用的设计模式
什么是面向对象,其主要特征是什么。
转义用户输入的特殊字符有哪些函数
语句中include和request区别是什么。
error repoting 函数的作用是什么
PHP中isset和empty的区别
move_uploaded_file 参数说明

文章标签

CSS
Excel
ubuntu
php
五笔
vim
Linux
HTML
command
drupal 7
composer
centos
Mysql
drupal 8
模块(module)
VPN
drush
JavaSrcipt
apache
drupal 9
英语
Drupal
SEO
nerdtree
network
果树种植
surround
drupal10
主题(theme)
phpmyadmin
ssh
权限
yum
二进制
声音
ssl
selinux
HTML5
用户
password
Dreamweaver
flameshot
颜色
翻译
uploadprogress
DDEV
视图(views)
firewalld
gzip
快捷键
kernel
xdebug
错误
ckeditor
mbstring
C语言
源地址
简介
php扩展
电脑基础
certbot
git
apt
压缩解压
表单
电子秤
httpd
WireGuard
邮件验证
breadcrumb
AI
superfish
diff
重定向
网站备份
摄影
tagclouds
docker
java
csharp
短信验证
adsense
drupal9
电脑技巧
simple_adsense
算法
RSS
youtube
版本号
JavaScript
badblocks
端口
cookie
VUE
网站运营
计算机基础
gimp
form
mod_expires 模块
nginx
zip
http验证
重定向,301
curl
netstat
input
赚钱
ip
dns
RFID
标签优化
drupal11
maven
drupal 11
npm
哈希值
字段
更多
RSS源
本站由阿里云强力驱动,幸运券优惠链接
Copyright © 2019 - 2021 你行网 版权所有  粤ICP备19072650号