Blogger Information
Blog 36
fans 0
comment 0
visits 27868
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
一些常见的php面试题
小程_武汉_214945
Original
681 people have browsed it
  • 谈谈你对MVC的理解
    Model - 数据模型层:通常情况下对数据进行加工,进行一些其他的处理,与数据相关的一些操作都在 Model层 操作。
    View - 视图层:跟用户进行交互的一些界面上的东西。
    Controller - 控制层:用来处理业务逻辑的。

  • 什么是面向对象?它的特征是什么
    面向对象是程序的一种设计方式,它利于提高程序的重用性,使程序结构更加清晰。
    面向对象编程三大特性
    (1).封装性
    简单形象的解释就是,把功能放在一个盒子里,要用到这个功能的时候,打开盒子,取出就可以使用。
    (2).继承性
    子类自动继承一个或多个父类中的属性与方法,并可以重写或者添加新的属性或方法。
    这个特性简化了类和对象的创建,提高了代码的可重用性。
    (3).多态性
    指的是一个类可以创建多个对象,获取不同的结果。

  • public、private、protected的区别详解

    public 表示公有的,类内部外部子类都可以访问;
    private 表示私有的,只有本类内部可以使用;
    protected 表示受保护的,只有本类或子类或父类中可以访问;

  • 如何解决php跨域问题

  1. header("Access-Control-Allow-Origin: *"); * 表示所有
  • echo(),print(),print_r(),var_dump()的区别

    echo可以一次输出多个值,多个值之间用逗号分隔。echo是语言结构(language construct),而并不是真正的函数,因此不能作为表达式的一部分使用。echo是php的内部指令,不是函数,无返回值。

    print():函数print()打印一个值(它的参数),如果字符串成功显示则返回true,否则返回false。只能打印出简单类型变量的值(如int,string),有返回值

    printf():源于C语言中的printf()。该函数输出格式化的字符串。

    print_r()和var_dump()

    print_r()可以把字符串和数字简单地打印出来,而数组则以括起来的键和值得列表形式显示,并以Array开头。但print_r()输出布尔值和NULL的结果没有意义,因为都是打印”\n”。因此用var_dump()函数更适合调试。print_r是函数,可以打印出比较复杂的变量(如数组,对象),有返回值

    var_dump()判断一个变量的类型与长度,并输出变量的数值,如果变量有值输的是变量的值并回返数据类型。此函数显示关于一个或多个表达式的结构信息,包括表达式的类型与值。数组将递归展开值,通过缩进显示其结构。

  • 如何实现冒泡排序

  1. class maopao{
  2. public static function paixu($arr){
  3. $len = count($arr);
  4. for ($i = 0; $i < $len -1; $i++) {//循环对比的轮数
  5. for ($j = 0; $j < $len - $i - 1; $j++) {//当前轮相邻元素循环对比
  6. if ($arr[$j] > $arr[$j + 1]) {//如果前边的大于后边的
  7. $tmp = $arr[$j];//交换数据
  8. $arr[$j] = $arr[$j + 1];
  9. $arr[$j + 1] = $tmp;
  10. }
  11. }
  12. }
  13. return $arr;
  14. }
  15. }
  16. $maopao = new maopao();
  17. $arr = [5,9,8,4,3,7,1,25];
  18. $res = $maopao::paixu($arr);
  19. var_dump($res);
  • 如何实现快速排序
  1. class quickSort{
  2. //递归方式 递归指的是在函数内部,调用函数自身的操作。
  3. public function quickSort1($arr)
  4. {
  5. $len = count($arr);
  6. if ($len<2){
  7. return $arr;
  8. }
  9. $min = $max = $base = [];
  10. $base_item = $arr[0];
  11. for ($i=0; $i<$len; $i++){
  12. if ($arr[$i]<$base_item){
  13. $min[] = $arr[$i];
  14. }elseif($arr[$i]>$base_item){
  15. $max[] = $arr[$i];
  16. }else{
  17. $base[] = $arr[$i];
  18. }
  19. }
  20. $min = $this->quickSort1($min);
  21. $max = $this->quickSort1($max);
  22. return array_merge($max,$base,$min);
  23. }
  24. //非递归
  25. public function quickSort($arr)
  26. {
  27. $borderStack[] = [0, count($arr) - 1]; //数组边界
  28. while (!empty($borderStack))
  29. {
  30. $border = array_pop($borderStack);
  31. $left = $border[0];
  32. $right = $border[1];
  33. $pivot = $arr[$left]; // 分界值
  34. while ($left < $right)
  35. {
  36. while ($left<$right && $arr[$right] >= $pivot) $right--;
  37. $arr[$left] = $arr[$right];
  38. while ($left<$right && $arr[$left] < $pivot) $left++;
  39. $arr[$right] = $arr[$left];
  40. }
  41. //$left 等于 $right :
  42. $arr[$left] = $pivot;
  43. if ($border[0] < $left - 1) $borderStack[] = [$border[0],$left-1];
  44. if ($border[1] > $left + 1) $borderStack[] = [$left+1, $border[1]];
  45. }
  46. return $arr;
  47. }
  48. }
  • POST和GET的区别
    get 通过url地址栏提交,长度有限且不安全,会被浏览器缓存
    post 通过表单提交,安全性较高,数据传输量大

  • SESSION 与COOKIE 的区别是什么,请从协议,产生的原因与作用说明?

    HTTP协议是无状态的协议。一旦数据交换完毕,客户端与服务器端的连接就会关闭,再次交换数据需要建立新的连接。这就意味着服务器无法从连接上跟踪会话。于是需要引入一种机制,COOKIE于是就顺应而生。

    Session是另一种记录客户状态的机制,不同的是Cookie保存在客户端浏览器中,而Session保存在服务器上。客户端浏览器访问服务器的时候,服务器把客户端信息以某种形式记录在服务器上。这就是Session。

    session依赖于cookie ,如果关闭cookie,则session失效,

    区别:(位置,大小,安全)

    1、cookie 是存放在浏览器端,不同的浏览器存储的cookie数量和数据的大小都不一致。大多数情况下单个域名限制最多保存20个cookie,每个cookie保存的数据不能超过4K。

    2、session存储在服务端,默认是以文件的形式存储,也可以存储在数据库和redis、memcache等缓存内存中。

    3、session是占用的服务器内存,所以内存越大,能存的值就越大,原则上讲无上限,一般用于存储对安全要求较高的重要数据;

    4、设置cookie时间可以使cookie过期。但是使用session-destory(),我们将会销毁会话

  • 请写出常见的http状态码并解释其含义
    200 OK 请求成功
    204 请求成功,但没有资源可以返回
    301 永久重定向
    302 临时重定向
    303 资源被分配到新的url 用get请求
    400 语法错误
    401 未经许可
    403 拒绝访问 权限问题
    404 无法找到资源
    500 表示服务器在执行请求时发生了错误,也有可能是web应用存在的bug或某些临时的错误
    503 表示服务器暂时处于超负载或正在进行停机维护,无法处理请求

  • isset() 和 empty() 区别

    isset判断变量是否存在,可以传入多个变量,若其中一个变量不存在则返回假,empty判断变量是否为空为假,只可传一个变量,如果为空为假则返回真。

  • 请说明 PHP 中传值与传引用的区别。什么时候传值什么时候传引用?

    按值传递:函数范围内对值的任何改变在函数外部都会被忽略

    按引用传递:函数范围内对值的任何改变在函数外部也能反映出这些修改

    优缺点:按值传递时,php必须复制值。特别是对于大型的字符串和对象来说,这将会是一个代价很大的操作。按引用传递则不需要复制值,对于性能提高很有好处。

  • 在PHP中error_reporting这个函数有什么作用?

    设置 PHP 的报错级别并返回当前级别。

  • @foo()和foo()的区别
    @foo()控制错误输出,foo()正常表达

  • include、require的区别,引用一次可以用什么代替
    include 如果遇到错误 产生警告,程序继续执行
    require 遇到错误 产生报错 程序终止执行
    include_once
    require_once

  • 如何用php获取指定目录下的所有子目录以及文件

  1. function searchDir($path,&$files){
  2. if(is_dir($path)){
  3. $opendir = opendir($path);
  4. while ($file = readdir($opendir)){
  5. if($file != '.' && $file != '..'){
  6. searchDir($path.DIRECTORY_SEPARATOR.$file, $files);
  7. }
  8. }
  9. closedir($opendir);
  10. }
  11. if(!is_dir($path)){
  12. $files[] = $path;
  13. }
  14. }
  15. //得到目录名
  16. function getDir($dir){
  17. $files = array();
  18. searchDir($dir, $files);
  19. return $files;
  20. }
  21. $filenames = getDir('E:\test');
  22. foreach ($filenames as $value){
  23. echo $value.'<br/>';
  24. }
  • 写出php常用的时间函数
  1. time(); //当前时间戳
  2. date('Y-m-d H:i:s'); //当前时间
  3. strtotime();//日期转时间戳
  4. date('Y-m-d H:i:s',strtotime('+1 Months')); //获取下个月的当前时间
  5. date('Y-m-d H:i:s',strtotime('+1 Day')); //获取明天的当前时间
  6. date('Y-m-d H:i:s',strtotime('+1 Week')); //获取下周的当前时间
  7. $weekarray=array("日","一","二","三","四","五","六");
  8. echo "星期".$weekarray[date("w")]; //今天星期几
  9. echo "星期".$weekarray[date("w",strtotime("2020-8-20"))] //指定时间
  10. //获取两个日期之间的相差天数
  11. function between_date1($startdate,$enddate){
  12. $startdate = strtotime($startdate);
  13. $enddate = strtotime($enddate);
  14. return abs(round(($enddate-$startdate)/3600/24)) ;
  15. }
  16. function between_date2($startdate,$enddate){
  17. $datetime_start = new DateTime($startdate);
  18. $datetime_end = new DateTime($enddate);
  19. $days = $datetime_start->diff($datetime_end)->days;
  20. return $days;
  21. }
  • 如何避免截取中文字符出现乱码
  1. $str = mb_substr($str, 0, 2);
  • 如何理解git并写出几个常用命令
    git是分布式版本控制系统
  1. git config --global --list # 查看所有仓库的配置信息
  2. git config --local --list # 查看某个指定范围的仓库的配置信息,执行这个命令需先建立一个仓库
  3. git config --system --list #查看所有系统用户的仓库信息
  4. git config --global user.name '用户名'
  5. git config --global user.email '有效的邮箱地址'
  6. git clone 'http 地址\ ssh 地址' #克隆远程仓库到本地
  7. git init '仓库名字' #创建本地仓库
  8. cat readme.txt #查看文件
  9. git status #查看状态
  10. git push # 上传到远程仓库
  11. git add #上传文件
  12. git log #查看日志
  13. git commit -m '备注信息' # 提交代码到本地仓库
  • 写出几个php常用的字符串函数以及数组函数
  1. //字符串
  2. substr() //字符串截取
  3. str_replace() //字符串替换
  4. strpos() //字符串第一次出现的位置
  5. strrpos() //字符串最后一次出现的位置
  6. strlen() //计算长度
  7. mb_strlen() //中文字符计算长度
  8. trim() //去除字符串首尾空格和特殊字符,并返回处理后字符串
  9. explode() //字符串拆分为数组
  10. strtoupper() //字符串转大写
  11. strtolower() //字符串转小写
  12. strstr("Hello world!","world"); //查找 "world" 在 "Hello world!" 中是否存在,如果是,返回该字符串及后面剩余部分
  13. //数组
  14. array_flip() //交换数组中的键和值
  15. array_slice() //返回数组中被选定的部分
  16. array_unique() //删除数组中的重复值
  17. array_key_exists() //检查指定的键名是否存在于数组中
  18. array_combine() //通过合并两个数组来创建一个新数组
  19. count() //数组长度
  20. array_merge() //把一个或多个数组合并为一个数组
  21. array_pop() //删除数组的最后一个元素(出栈)
  22. array_push() //将一个或多个元素插入数组的末尾(入栈)
  23. array_sum() //返回数组中值的和
  24. array_diff() //比较数组,返回差集(只比较键值)
  25. array_diff_assoc() //比较数组,返回差集(比较键名和键值)
  • 什么是JSON、php相关函数
    JSON是一种轻量级的数据交换格式,是独立的语言。
    json_encode、json_decode
  • 请用jquery写一段ajax请求
  1. $.ajax({
  2. type: 'POST',
  3. url: url,
  4. data: data,
  5. dataType: 'json'
  6. success: function(msg){
  7. console.log(msg)
  8. },
  9. });
  • 对于大流量的网站,采用什么方法来解决访问量问题

1.优化SQL语句 优化索引
2.加缓存,memcached, redis;
3.禁用外部倒链
4.控制大文件的下载
5.主从复制,读写分离
6.分表分库 ,水平拆分,垂直拆分

Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post