加入收藏 | 设为首页 | 会员中心 | 我要投稿 孝感站长网 (https://www.0712zz.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 运营中心 > 交互 > 正文

PHP 面试踩过的坑

发布时间:2020-12-25 02:06:57 所属栏目:交互 来源:网络整理
导读:1.get,post 的区别 **显示有区别 ** get方法是将字符串拼接在地址栏后面可以看见 而post方法看不见 **传递的大小有区别 ** 具体大小和浏览器有关系,ie浏览器是2k其他浏览器的最大值可能不同,但是也比较

?

?

8. 高并发的解决方案

web服务器优化 :负载均衡 
流量优化:防盗链处理 将恶意请求屏蔽,
前端优化:减少http请求、添加异步请求、启用浏览器缓存和文件压缩、cdn加速、建立独立的图片服务器、
服务端优化:  页面静态化、并发处理、队列处理、
数据库优化: 数据库缓存、分库分表、分区操作 、读写分离、负载均衡

?

?

9.MVC 的理解

1、Model(业务模型):应用程序中用于处理应用程序数据逻辑的部分,通常模型对象负责在数据库中存取数据。          
2、view(视图):应用程序中处理数据显示的部分。通常视图是依据模型数据创建的。
3、controller(控制器):应用程序中处理用户交互的部分。通常控制器负责从视图读取数据,控制用户输入,并向模型发送数据。
?

10. 常用的文件操作函数

 1 **1. 获得文件名:**
 2 basename — 返回路径中的文件名部分
 3 
 4 $path = "/home/cate/index/index2.php";
 5 $file = basename($path);
 6 echo $file; //结果index2.php
 7 
 8 **2. 获得目录名**
 9 dirname — 返回路径中的目录部分
10 
11 $path = "/home/cate/index/index2.php";
12 $file = dirname($path);
13 echo $file;//结果/home/cate/index
14 
15 **3.得到路径关联数组**
16 pathinfo() 函数以数组的形式返回关于文件路径的信息。
17 返回的数组元素如下:
18 -   [dirname]: 目录路径
19 -   [basename]: 文件名
20 -   [extension]: 文件后缀名
21 -   [filename]: 不包含后缀的文件名
22 pathinfo(path,options)
23 | path | 必需。规定要检查的路径。 |
24 | options | 可选。规定要返回的数组元素。默认是 all。
25 
26 可能的值:
27 
28 -   PATHINFO_DIRNAME - 只返回 dirname
29 -   PATHINFO_BASENAME - 只返回 basename
30 -   PATHINFO_EXTENSION - 只返回 extension
31 -   PATHINFO_FILENAME - 只返回 filename
32 
33  |
34  **4.filesize取得文件大小**
35 filesize ( string $filename )
36 返回文件大小的字节数,如果出错返回  **FALSE** 并生成一条  **E_WARNING** 级的错误。
37 
38  **判断目录是否存在**
39  $lujing = "./nihao/wohao";
40  if(!is_dir($liujing)){ 
41      mkdir(iconv("UTF-8","GBK",$lujing),0777,true);
42  }
43 
44  **判断文件是否存在**
45  file_exists(path);

?






?

11. 常见的排序算法

  1 1. 冒泡排序
  2 思路分析:在要排序的一组数中,对当前还未排好的序列,从前往后对相邻的两个数依次进行比较和调整,让较大的数往下沉,较小的往上冒。即,每当两相邻的数比较后发现它们的排序与排序要求相反时,就将它们互换。
  3 
  4 代码实现:
  5 $arr=array(1,43,54,62,21,66,32,78,36,76,39);  
  6 function bubbleSort($arr)
  7 {  
  8   $len=count($arr);
  9   //该层循环控制 需要冒泡的轮数
 10   for($i=1;$i<$len;$i++)
 11   { //该层循环用来控制每轮 冒出一个数 需要比较的次数
 12     for($k=0;$k<$len-$i;$k++)
 13     {
 14        if($arr[$k]>$arr[$k+1])
 15         {
 16             $tmp=$arr[$k+1];
 17             $arr[$k+1]=$arr[$k];
 18             $arr[$k]=$tmp;
 19         }
 20     }
 21   }
 22   return $arr;
 23 }
 24 
 25 2. 选择排序 
 26 思路分析:在要排序的一组数中,选出最小的一个数与第一个位置的数交换。然后在剩下的数当中再找最小的与第二个位置的数交换,如此循环到倒数第二个数和最后一个数比较为止。
 27 
 28 代码实现:
 29 function selectSort($arr) {
 30 //双重循环完成,外层控制轮数,内层控制比较次数
 31  $len=count($arr);
 32     for($i=0; $i<$len-1; $i++) {
 33         //先假设最小的值的位置
 34         $p = $i;
 35 
 36         for($j=$i+1; $j<$len; $j++) {
 37             //$arr[$p] 是当前已知的最小值
 38             if($arr[$p] > $arr[$j]) {
 39             //比较,发现更小的,记录下最小值的位置;并且在下次比较时采用已知的最小值进行比较。
 40                 $p = $j;
 41             }
 42         }
 43         //已经确定了当前的最小值的位置,保存到$p中。如果发现最小值的位置与当前假设的位置$i不同,则位置互换即可。
 44         if($p != $i) {
 45             $tmp = $arr[$p];
 46             $arr[$p] = $arr[$i];
 47             $arr[$i] = $tmp;
 48         }
 49     }
 50     //返回最终结果
 51     return $arr;
 52 }
 53 
 54 3.插入排序
 55 思路分析:在要排序的一组数中,假设前面的数已经是排好顺序的,现在要把第n个数插到前面的有序数中,使得这n个数也是排好顺序的。如此反复循环,直到全部排好顺序。
 56 
 57 代码实现:
 58 function insertSort($arr) {
 59     $len=count($arr); 
 60     for($i=1,$i<$len; $i++) {
 61         $tmp = $arr[$i];
 62         //内层循环控制,比较并插入
 63         for($j=$i-1;$j>=0;$j--) {
 64             if($tmp < $arr[$j]) {
 65                 //发现插入的元素要小,交换位置,将后边的元素与前面的元素互换
 66                 $arr[$j+1] = $arr[$j];
 67                 $arr[$j] = $tmp;
 68             } else {
 69                 //如果碰到不需要移动的元素,由于是已经排序好是数组,则前面的就不需要再次比较了。
 70                 break;
 71             }
 72         }
 73     }
 74     return $arr;
 75 }
 76 
 77 4.快速排序  
 78 思路分析:选择一个基准元素,通常选择第一个元素或者最后一个元素。通过一趟扫描,将待排序列分成两部分,一部分比基准元素小,一部分大于等于基准元素。此时基准元素在其排好序后的正确位置,然后再用同样的方法递归地排序划分的两部分。
 79 
 80 代码实现:
 81 function quickSort($arr) {
 82     //先判断是否需要继续进行
 83     $length = count($arr);
 84     if($length <= 1) {
 85         return $arr;
 86     }
 87     //选择第一个元素作为基准
 88     $base_num = $arr[0];
 89     //遍历除了标尺外的所有元素,按照大小关系放入两个数组内
 90     //初始化两个数组
 91     $left_array = array();  //小于基准的
 92     $right_array = array();  //大于基准的
 93     for($i=1; $i<$length; $i++) {
 94         if($base_num > $arr[$i]) {
 95             //放入左边数组
 96             $left_array[] = $arr[$i];
 97         } else {
 98             //放入右边
 99             $right_array[] = $arr[$i];
100         }
101     }
102     //再分别对左边和右边的数组进行相同的排序处理方式递归调用这个函数
103     $left_array = quick_sort($left_array);
104     $right_array = quick_sort($right_array);
105     //合并
106     return array_merge($left_array,array($base_num),$right_array);
107 }

?

(编辑:孝感站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读