一份不错的PHP面试题

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

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

2. 写出如下程序的输出结果

复制代码
<?php    
    $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. 写出如下程序的输出结果

<?php    
    $test = 'aaaaaa';
    $abc = & $test;
    unset($test);
    echo $abc;
?>

4. 写出如下程序的输出结果

复制代码
<?php    
    $count = 5;
    function get_count(){
        static $count = 0;
        return $count++;
    }
    echo $count;
    ++$count;
    echo get_count();
    echo get_count();
?>
复制代码

5. 写出如下程序的输出结果

复制代码
<?php    
    $GLOBALS['var1'] = 5;
    $var2 = 1;
    function get_value(){
        global $var2;
        $var1 = 0;
        return $var2++;
    }
    get_value();
    echo $var1;
    echo $var2;
?>
复制代码

6. 写出如下程序的输出结果

复制代码
<?php    
    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 参考: http://my.oschina.net/banbo/blog/303306 里面的结论二

  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){
    return pathinfo($file_name, PATHINFO_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=$i; $j<$count-1; $j++){
      if ($array[$i] > $array[$j]){
      $tmp = $array[$i];
      $array[$i] = $array[$j];
      $array[$j] = $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);
}
复制代码
  1. 使用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;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 好的,下面是一份 Prometheus 面试题整理: 1. 什么是 Prometheus? 2. Prometheus 的主要功能是什么? 3. Prometheus 支持哪些数据源? 4. Prometheus 如何进行数据存储? 5. Prometheus 如何实现自动发现? 6. Prometheus 中有哪些重要的概念? 7. Prometheus 的查询语法是如何设计的? 8. Prometheus 有哪些常见的报警规则? 9. Prometheus 如何与其他监控系统集成? 10. 如何在 Prometheus 中执行批量操作? 这份题目可以帮助你了解 Prometheus 的基本概念,数据存储,查询语法,报警规则以及集成方式。希望对你有所帮助。 ### 回答2: 以下是一份关于Prometheus的面试题: 1. 请简要介绍一下Prometheus以及其主要特点和用途。 2. Prometheus如何实现数据采集和存储? 3. Prometheus的数据模型是什么?请解释Metrics、Label和Timeseries的概念。 4. Prometheus的查询语言是什么?请提供一些常用的查询示例。 5. Prometheus如何进行告警和通知? 6. 提供一些Prometheus的常见监控指标和其含义。 7. 介绍一下Prometheus的数据持久化和备份机制。 8. Prometheus的高可用性是如何实现的? 9. Prometheus可以与哪些第三方工具进行集成?请举例说明。 10. 你在实际项目中如何使用Prometheus来进行监控和故障排查? 请注意,这只是一份基础的Prometheus面试题目,可能并不全面。在实际面试中,面试官可能会根据候选人的经验和技术能力提出更深入的问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值