php笔试题(1)--转载

一份不错的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);
}

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;
}

原文地址:http://www.phpzixue.cn/detail586.shtml

时间: 2024-10-22 11:10:04

php笔试题(1)--转载的相关文章

【转载】经典10道c/c++语言经典笔试题(含全部所有参考答案)

经典10道c/c++语言经典笔试题(含全部所有参考答案) 1. 下面这段代码的输出是多少(在32位机上). char *p; char *q[20]; char *m[20][20]; int (*n)[10]; struct MyStruct { char dda; double dda1; int type ; }; MyStruct k; printf("%d %d %d %d %d",sizeof(p),sizeof(q),sizeof(m),sizeof(n),sizeof(

转载 遇到过的一些php笔试题

遇到过的一些php笔试题 1.linux的多线程和多进程有什么区别?什么时候使用多线程,什么时候使用多进程? 答:(1)进程资源调度的最小单位,线程是cpu调度的最小单位:多进程开销大,多线程开销小,这是最基本的区别:一个进程里面可能有很多线程,把进程分解为线程之后就可以有效利用cpu和内存 (2)当需要频繁创建和销毁时优先选用多线程: 需要进行大量计算的优先使用线程: 强相关的处理用线程,弱相关的处理用进程:    可能要扩展到多机分布的用进程,多核分布的用线程: 都满足需求的情况下用最熟悉最

(转载)c++笔试题汇总

今天去9City笔试才发现很多基本的东西都忘记了,以后面试前要看看这篇文章了!唉,老了! ①链表反转 单向链表的反转是一个经常被问到的一个面试题,也是一个非常基础的问题.比如一个链表是这样的: 1->2->3->4->5 通过反转后成为5->4->3->2->1. 最容易想到的方法遍历一遍链表,利用一个辅助指针,存储遍历过程中当前指针指向的下一个元素,然后将当前节点元素的指针反转后,利用已经存储的指针往后面继续遍历.源代码如下: struct linka {

java笔试题(1)

转载自:http://blog.csdn.net/fmh2011/article/details/19690999 某互联网公司的java基础笔试题 该公司的不少题来自于java面试宝典 1.char型变量中能不能存贮一个中文汉字?为什么? char型变量是用来存储Unicode编码的字符的,unicode编码字符集中包含了汉字,所以,char型变量中当然可以存储汉字啦.不过,如果某个特殊的汉字没有被包含在unicode编码字符集中,那么,这个char型变量中就不能存储这个特殊汉字.补充说明:u

送上今年微软的一道笔试题

这里送上一道微软的笔试题,具体题目如下: Time Limit: 10000msCase Time Limit: 1000msMemory Limit: 256MB Description Consider a string set that each of them consists of {0, 1} only. All strings in the set have the same number of 0s and 1s. Write a program to find and outp

笔试题集锦(智力题)

一.简答题 1. 动态链接库和静态链接库的优缺点 2. 轮询任务调度和可抢占式调度有什么区别? 3. 列出数据库中常用的锁及其应用场景 二.算法设计题 1. 给定N是一个正整数,求比N大的最小"不重复数",这里的不重复是指没有两个相等的相邻位,如1102中的11是相等的两个相邻位故不是不重复数,而12301是不重复数. 2. 设N是一个大整数,求长度为N的字符串的最长回文子串. 3. 坐标轴上从左到右依次的点为a[0].a[1].a[2]--a[n-1],设一根木棒的长度为L,求L最多

计算机网络笔试题 详细分析复习知识点

1.在无盘工作站向服务器申请IP地址时,使用的是(     )协议. A.ARP B.RARP C.ICMP D.IGMP 解析: ARP工作机制 : A的ARP表中没有B的IP MAC 对应条目则发送ARP广播包,请求B的MAC地址 在全网"呼叫" 当B听到有机器"嚎叫"就返回一个数据包告诉你"我的MAC是X"然后双方就可以通信了,在A"嚎叫"的时候,A需要把IP和MAC地址广播出去用于B返回信息, 之后AB更新自己的ARP

2014阿里巴巴网上笔试题-文章3大标题-公共最长的字符串长度

说明 2014阿里巴巴网上笔试题-文章3大标题    首先.我没有参加阿里巴巴网上笔试题,所有的主题是叙述性说明来自别人.的分析.假设有什么不正确的地方还望不吝赐教. 也希望大家可以有更好的办法,希望大家来能不吝赐教. 题目描写叙述 给定一个主字符串和一个匹配字符串.如今问你,找出 "主串中可匹配到的匹配串中子串的最大长度",可能比較绕.举个样例吧 主字符串       abcdefgsdff     记为A 匹配字符串   abefgf               记为B 要求的值就

java常见面试题——java笔试题总结

注:本文转载自http://www.cnblogs.com/huajiezh/p/5790928.html,版权归其所有! Java常见面试题总结 一.Java基础 1.String类为什么是final的. 2.HashMap的源码,实现原理,底层结构. 3.说说你知道的几个Java集合类:list.set.queue.map实现类咯... 4.描述一下ArrayList和LinkedList各自实现和区别 5.Java中的队列都有哪些,有什么区别. 6.反射中,Class.forName和cl

走向面试之经典的数据库笔试题:一、你必知必会的SQL语句练习-Part 2

本文是在Cat Qi的参考原帖的基础之上经本人一题一题练习后编辑而成,非原创,仅润色而已.另外,本文所列题目的解法并非只有一种,本文只是给出比较普通的一种而已,也希望各位园友能够自由发挥. 一.书到用时方恨少:"图书-读者-借阅"类题目 1.1 本题目的表结构 本题用到下面三个关系表: CARDS 借书卡. CNO 卡号,NAME 姓名,CLASS 班级 BOOKS 图书. BNO 书号,BNAME 书名,AUTHOR 作者,PRICE 单价,QUANTITY 库存册数 BORROW