黑夜路人出的几道php笔试题


Posted in PHP onAugust 04, 2009

一、基础题
1. 写出如下程序的输出结果

<? 
$str1 = null; 
$str2 = false; 
echo $str1==$str2 ? '相等' : '不相等'; 
$str3 = ''; 
$str4 = 0; 
echo $str3==$str4 ? '相等' : '不相等'; 
$str5 = 0; 
$str6 = '0'; 
echo $str5===$str6 ? '相等' : '不相等'; 
?>

2. 写出如下程序的输出结果
<? 
$a1 = null; 
$a2 = false; 
$a3 = 0; 
$a4 = ''; 
$a5 = '0'; 
$a6 = 'null'; 
$a7 = array(); 
$a8 = array(array()); 
echo empty($a1) ? 'true' : 'false'; 
echo empty($a2) ? 'true' : 'false'; 
echo empty($a3) ? 'true' : 'false'; 
echo empty($a4) ? 'true' : 'false'; 
echo empty($a5) ? 'true' : 'false'; 
echo empty($a6) ? 'true' : 'false'; 
echo empty($a7) ? 'true' : 'false'; 
echo empty($a8) ? 'true' : 'false'; 
?>

3. 写出如下程序的输出结果
<? 
$test = 'aaaaaa'; 
$abc = & $test; 
unset($test); 
echo $abc; 
?>

4. 写出如下程序的输出结果
<?$count = 5; 
function get_count(){ 
static $count = 0; 
return $count++; 
} 
echo $count; 
++$count; 
echo get_count(); 
echo get_count(); 
?>

5. 写出如下程序的输出结果
<? 
$GLOBALS['var1'] = 5; 
$var2 = 1; 
function get_value(){ 
global $var2; 
$var1 = 0; 
return $var2++; 
} 
get_value(); 
echo $var1; 
echo $var2; 
?>

6. 写出如下程序的输出结果
<? 
function get_arr($arr){ 
unset($arr[0]); 
} 
$arr1 = array(1, 2); 
$arr2 = array(1, 2); 
get_arr(&$arr1); 
get_arr($arr2); 
echo count($arr1); 
echo count($arr2); 
?>

7. 使用五种以上方式获取一个文件的扩展名
要求:dir/upload.image.jpg,找出 .jpg 或者 jpg ,
必须使用PHP自带的处理函数进行处理,方法不能明显重复,可以封装成函数,比如 get_ext1($file_name), get_ext2($file_name)
二、算法题
1. 使用PHP描述冒泡排序和快速排序算法,对象可以是一个数组
2. 使用PHP描述顺序查找和二分查找(也叫做折半查找)算法,顺序查找必须考虑效率,对象可以是一个有序数组
3. 写一个二维数组排序算法函数,能够具有通用性,可以调用php内置函数
【附答案】(以下答案不一定是最好的,只是一个简单的参考)
一、基础题
1. 相等 相等 不相等
2. true true true true true false true false
3. aaaaaa
4. 5 0 1
5. 5 2
6. 1 2
7. 使用五种以上方式获取一个文件的扩展名
function get_ext1($file_name){ 
return strrchr($file_name, '.'); 
} 
function get_ext2($file_name){ 
return substr($file_name, strrpos($file_name, '.')); 
} 
function get_ext3($file_name){ 
return array_pop(explode('.', $file_name)); 
} 
function get_ext4($file_name){ 
$p = pathinfo($file_name); 
return $p['extension']; 
} 
function get_ext5($file_name){ 
return strrev(substr(strrev($file_name), 0, strpos(strrev($file_name), '.'))); 
}

二、算法题
1. 使用PHP描述冒泡排序和快速排序算法,对象可以是一个数组
//冒泡排序(数组排序) 
function bubble_sort($array) 
{ 
$count = count($array); 
if ($count <= 0) return false; 
for($i=0; $i<$count; $i++){ 
for($j=$count-1; $j>$i; $j--){ 
if ($array[$j] < $array[$j-1]){ 
$tmp = $array[$j]; 
$array[$j] = $array[$j-1]; 
$array[$j-1] = $tmp; 
} 
} 
} 
return $array; 
} 
//快速排序(数组排序) 
function quick_sort($array) { 
if (count($array) <= 1) return $array; 
$key = $array[0]; 
$left_arr = array(); 
$right_arr = array(); 
for ($i=1; $i<count($array); $i++){ 
if ($array[$i] <= $key) 
$left_arr[] = $array[$i]; 
else 
$right_arr[] = $array[$i]; 
} 
$left_arr = quick_sort($left_arr); 
$right_arr = quick_sort($right_arr); 
return array_merge($left_arr, array($key), $right_arr); 
}

2. 使用PHP描述顺序查找和二分查找(也叫做折半查找)算法,顺序查找必须考虑效率,对象可以是一个有序数组
//二分查找(数组里查找某个元素) 
function bin_sch($array, $low, $high, $k){ 
if ($low <= $high){ 
$mid = intval(($low+$high)/2); 
if ($array[$mid] == $k){ 
return $mid; 
}elseif ($k < $array[$mid]){ 
return bin_sch($array, $low, $mid-1, $k); 
}else{ 
return bin_sch($array, $mid+1, $high, $k); 
} 
} 
return -1; 
} 
//顺序查找(数组里查找某个元素) 
function seq_sch($array, $n, $k){ 
$array[$n] = $k; 
for($i=0; $i<$n; $i++){ 
if($array[$i]==$k){ 
break; 
} 
} 
if ($i<$n){ 
return $i; 
}else{ 
return -1; 
} 
}

3. 写一个二维数组排序算法函数,能够具有通用性,可以调用php内置函数
//二维数组排序, $arr是数据,$keys是排序的健值,$order是排序规则,1是升序,0是降序 
function array_sort($arr, $keys, $order=0) { 
if (!is_array($arr)) { 
return false; 
} 
$keysvalue = array(); 
foreach($arr as $key => $val) { 
$keysvalue[$key] = $val[$keys]; 
} 
if($order == 0){ 
asort($keysvalue); 
}else { 
arsort($keysvalue); 
} 
reset($keysvalue); 
foreach($keysvalue as $key => $vals) { 
$keysort[$key] = $key; 
} 
$new_array = array(); 
foreach($keysort as $key => $val) { 
$new_array[$key] = $arr[$val]; 
} 
return $new_array; 
}
PHP 相关文章推荐
服务器端解压缩zip的脚本
Dec 22 PHP
兼容性最强的PHP生成缩略图的函数代码(修改版)
Jan 18 PHP
php ajax 静态分页过程形式
Sep 02 PHP
解析Ubuntu下crontab命令的用法
Jun 24 PHP
PHP遍历目录并返回统计目录大小
Jun 09 PHP
PHP使用SOAP扩展实现WebService的方法
Apr 01 PHP
CodeIgniter连贯操作的底层原理分析
May 17 PHP
PHP简单创建压缩图的方法
Aug 24 PHP
PHP无限极分类函数的实现方法详解
Apr 15 PHP
PHP容器类的两种实现方式示例
Jul 24 PHP
浅析PHP反序列化中过滤函数使用不当导致的对象注入问题
Feb 15 PHP
php ActiveMQ的安装与使用方法图文教程
Feb 23 PHP
谈谈新手如何学习PHP 默默经典版本
Aug 04 #PHP
用PHP的ob_start() 控制您的浏览器cache
Aug 03 #PHP
一贴学会PHP 新手入门教程
Aug 03 #PHP
php 获得汉字拼音首字母的函数
Aug 01 #PHP
PHP 上传文件的方法(类)
Jul 30 #PHP
PHP 文章中的远程图片采集到本地的代码
Jul 30 #PHP
PHP 中文乱码解决办法总结分析
Jul 30 #PHP
You might like
php实现简单的语法高亮函数实例分析
2015/04/27 PHP
人脸识别测颜值、测脸龄、测相似度微信接口
2016/04/07 PHP
图文详解PHP环境搭建教程
2016/07/16 PHP
使用git迁移Laravel项目至新开发环境的步骤详解
2020/04/06 PHP
javascript 全等号运算符使用说明
2010/05/31 Javascript
jQuery控制输入框只能输入数值的小例子
2013/03/20 Javascript
判断滚动条到底部的JS代码
2013/11/04 Javascript
jQuery javaScript捕获回车事件(示例代码)
2013/11/07 Javascript
根据表格中的某一列进行排序的javascript代码
2013/11/29 Javascript
多种方法实现load加载完成后把图片一次性显示出来
2014/02/19 Javascript
JS控制表单提交的方法
2015/07/09 Javascript
jQuery Ajax自定义分页组件(jquery.loehpagerv1.0)实例详解
2017/05/01 jQuery
解决Webpack 热部署检测不到文件变化的问题
2018/02/22 Javascript
vue webpack开发访问后台接口全局配置的方法
2018/09/18 Javascript
NodeJS模块与ES6模块系统语法及注意点详解
2019/01/04 NodeJs
js module大战
2019/04/19 Javascript
layui使用button按钮 点击出现弹层 弹层中加载表单的实例
2019/09/04 Javascript
关于JS模块化的知识点分享
2019/10/16 Javascript
JavaScript中的this/call/apply/bind的使用及区别
2020/03/06 Javascript
Python中的引用和拷贝浅析
2014/11/22 Python
python实现连续图文识别
2018/12/18 Python
Python实现计算字符串中出现次数最多的字符示例
2019/01/21 Python
Python Django搭建网站流程图解
2020/06/13 Python
Python基于Socket实现简易多人聊天室的示例代码
2020/11/29 Python
Python爬虫之Selenium库的使用方法
2021/01/03 Python
python利用proxybroker构建爬虫免费IP代理池的实现
2021/02/21 Python
南京软件公司的.net程序员笔试题
2014/08/31 面试题
电子工程专业毕业生求职信
2014/03/14 职场文书
党员领导干部廉洁从政承诺书
2014/03/27 职场文书
小学生十佳少年事迹材料
2014/08/20 职场文书
军人离婚协议书样本
2014/10/21 职场文书
个园导游词
2015/02/04 职场文书
2015年大学生村官工作总结
2015/04/21 职场文书
2015初中政教处工作总结
2015/07/21 职场文书
golang协程池模拟实现群发邮件功能
2021/05/02 Golang
MybatisPlus EntityWrapper如何自定义SQL
2022/03/22 Java/Android