打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
PHP的文件操作与算法实现的面试题示例

操作文件

1.使用5种以上的方式获取一个文件的扩展名

要求: dir/upload.image.jpg, 找出.jpg或者jpg


'; echo two($str); echo '
'; echo three($str); echo '
'; echo four($str); echo '
'; echo five($str); echo '
';

2.写一个php函数算出两个文件的相对路径。例如$a='/a/b/c/d/e.php'; $b='/a/b/12/34/c.php',B相对于A的相对路径是什么?

这道题目可以看成是求第一个公共节点的题目,网上流传的代码大部分是错的,考虑不周全,当然我这个也只是用“../”去表示,没用'./'

 

$counta) { while ($countb > $counta) { $path .= '../'; $countb --; } } // 寻找第一个公共结点 for ($i = $countb - 1; $i >= 0;) { if ($patha[$i] != $pathb[$i]) { $path .= '../'; $i --; } else { // 判断是否为真正的第一个公共结点,防止出现子目录重名情况 for ($j = $i - 1, $flag = 1; $j >= 0; $j --) { if ($patha[$j] == $pathb[$j]) { continue; } else { $flag = 0; break; } } if ($flag) break; else $i ++; } } for ($i += 1; $i <= $counta;="" $i="" ++)="" {="" $path="" .="$patha[$i]" .="" '/';="" }="" return="" $path;="" }="" $a='/a/c/d/e.php' ;="" $b='/a/c.php' ;="" $path="getRelativePath($a," $b);="" echo="" $path;="">


算法

1.使用PHP描述冒泡排序和快速排序,对象可以是一个数组

< $count="" -="" 1;="" $i="" ++)="" {="" for="" ($j="0;" $j="">< $count="" -="" $i="" -="" 1;="" $j="" ++)="" {="" if="" ($array[$j]=""> $array[$j + 1]) { $tmp = $array[$j]; $array[$j] = $array[$j + 1]; $array[$j + 1] = $tmp; } } } } /** * 快速排序 */ function pivotParation (&$array, $start, $end) { $stand = $array[$start]; while ($start < $end)="" {="" while="" ($start="">< $end="" &&="" $array[$end]="">= $stand) { $end --; } if ($start < $end)="" {="" $array[$start="" ++]="$array[$end];" }="" while="" ($start="">< $end="" &&="" $array[$start]=""><= $stand)="" {="" $start="" ++;="" }="" if="" ($start="">< $end)="" {="" $array[$end="" --]="$array[$start];" }="" }="" $array[$start]="$stand;" return="" $start;="" }="" function="" quicksort="" (&$array,="" $begin,="" $end)="" {="" if="" ($begin="">< $end)="" {="" $pivot="pivotParation($array," $begin,="" $end);="" quicksort($array,="" $begin,="" $pivot="" -="" 1);="" quicksort($array,="" $pivot="" +="" 1,="" $end);="" }="" }="" $arr="array(" 5,="" 1,="" 3,="" 2,="" 19,="" 11,="" 25,="" 12,="" 100,="" 10000,="" 12="" );="" 冒泡排序="" maopaosort($arr);="" print_r($arr);="" echo="">
'; // 快速排序 $count = count($arr); quickSort($arr, 0, $count - 1); print_r($arr);

2.使用php描述顺序查找和二分查找

< $len;="" $i="" ++)="" {="" if="" ($arr[$i]="=" $needle)="" {="" return="" $i;="" }="" }="" return="" -="" 1;="" }="" *="" *="" 二分查找="" */="" function="" midsearch="" ($arr,="" $start,="" $end,="" $needle)="" {="" while="" ($start=""><= $end)="" {="" $mid="(int)($start" +="" ($end="" -="" $start)="" 2);="" 防止超出整数表示范围="" if="" ($arr[$mid]="=" $needle)="" {="" return="" $mid;="" }="" else="" if="" ($arr[$mid]=""> $needle) { $end = $mid - 1; } else { $start = $mid + 1; } } return - 1; } $arr = array( 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ); $needle = 5; echo seqSearch($arr, $needle); echo '
'; echo midSearch($arr, 0, count($arr) - 1, $needle);

3.写一个二维数组排序算法函数,能够具有通用性,可以调用php内置函数

/** * Description:获取中枢点的位置 * * @param array $array * @param int $left * @param int $right * @param string $field * @return int */ function fetchArrayPivot (&$array, $left, $right, $field) { // 基准定义 $stand = $array[$left]; // 遍历数组 while ($left < $right)="" {="" while="" ($left="">< $right="" &&="" $array[$right][$field]="">= $stand[$field]) { $right --; } if ($left < $right)="" {="" $array[$left="" ++]="$array[$right];" }="" while="" ($left="">< $right="" &&="" $array[$left][$field]=""><= $stand[$field])="" {="" $left="" ++;="" }="" if="" ($left="">< $right)="" {="" $array[$right="" --]="$array[$left];" }="" }="" 获取中枢点位置="" $array[$left]="$stand;" return="" $left;="" }="" *="" *="" description:快速排序主程序="" *="" *="" @param="" array="" $array="" *="" @param="" int="" $begin="" *="" @param="" int="" $end="" *="" @param="" string="" $field="" */="" function="" quicksort="" (&$array,="" $begin,="" $end,="" $field)="" {="" 变量定义="" $pivot="null;" if="" ($begin="">< $end)="" {="" $pivot="fetchArrayPivot($array," $begin,="" $end,="" $field);="" quicksort($array,="" $begin,="" $pivot="" -="" 1,="" $field);="" quicksort($array,="" $pivot="" +="" 1,="" $end,="" $field);="" }="" }="">

利用快排的思想,增加一个field参数

双12红包,淘宝天猫内部优惠券领取,点击进入

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
一份不错的php面试题(附答案)
php、json
php中大括号的作用
PHP实现中文汉字与16进制编码转换
php二维数组排序详解
关于 php 中 pack 、unpack、 ord 的理解和用法
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服