跳转到主要内容
你行网

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

评论

文章标签

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

相关文章

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

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

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