一、基础题
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;
}

文章转载自:https://www.3kts.cn/index.php/archives/66/

一份不错的php面试题(附答案)(笔试题)的更多相关文章

  1. 找工作的你不容错过的45个PHP面试题附答案(下篇)

    找工作的你不容错过的45个PHP面试题附答案(上篇) Q28:你将如何使用PHP创建Singleton类? /** * Singleton class * */ final class UserFac ...

  2. 2020年大厂Java面试前复习的正确姿势(800+面试题附答案解析)

    前言 个人觉得面试也像是一场全新的征程,失败和胜利都是平常之事.所以,劝各位不要因为面试失败而灰心. 丧失斗志.也不要因为面试通过而沾沾自喜,等待你的将是更美好的未来,继续加油! 本篇分享的面试题内容 ...

  3. 精选30道Java笔试题附答案分析

    精选30道Java笔试题解答 都是一些非常非常基础的题,是我最近参加各大IT公司笔试后靠记忆记下来的,经过整理献给与我一样参加各大IT校园招聘的同学们,纯考Java基础功底,老手们就不用进来了,免得笑 ...

  4. 【笔试题】Spring笔试题

    spring笔试题 1.Spring支持的事务管理类型 Spring支持两种类型的事务管理: 编程式事务管理:这意味你通过编程的方式管理事务,给你带来极大的灵活性,但是难维护. 声明式事务管理:这意味 ...

  5. 【笔试题】Java笔试题知识点

    Java高概率笔试题知识点 Java语法基础部分 [解析]java命令程序执行字节码文件是,不能跟文件的后缀名! 1.包的名字都应该是由小写单词组成,它们全都是小写字母,即便中间的单词亦是如此 2.类 ...

  6. 2017JAVA面试题附答案

    JAVA基础 JAVA中的几种基本类型,各占用多少字节?   String能被继承吗?为什么? 不可以,因为String类有final修饰符,而final修饰的类是不能被继承的,实现细节不允许改变.平 ...

  7. 2019年PHP面试题附答案(实战经验)

    出于一些原因近期做了一次工作变动,在职交接近一个半月时间大概面试了十五家公司,并且得到了自己比较满意的offer,最后基本上无缝衔接了新工作.总体来说,虽然准备的很充分,但面试期间还是暴露了许多问题, ...

  8. 2019最新整理JAVA面试题附答案

    本人免费整理了Java高级资料,涵盖了Java.Redis.MongoDB.MySQL.Zookeeper.Spring Cloud.Dubbo高并发分布式等教程,一共30G,需要自己领取.传送门:h ...

  9. 2018JAVA面试题附答案

    JAVA基础 JAVA中的几种基本类型,各占用多少字节? String能被继承吗?为什么? 不可以,因为String类有final修饰符,而final不能被继承的,实现细节不允许改变.平常我们定义的S ...

随机推荐

  1. Gnome桌面的下拉式终端: Guake

    什么是Guake? Guake是应用于Gnome环境的下拉式终端.主要由Python编写,使用了一些C,它以GPL2+许可证发布,适用于Linux以及类似的系统.Guake的灵感来源于电脑游戏Quak ...

  2. 【Python】nvshens按目录批量下载图片爬虫1.00(单线程版)

    # nvshens按目录批量下载图片爬虫1.00(单线程版) from bs4 import BeautifulSoup import requests import datetime import ...

  3. (笔试题)质数因子Prime Factor

    题目: Given any positive integer N, you are supposed to find all of its prime factors, and write them ...

  4. <The Art of Readable Code> 笔记二 (上)

    第2章  封装信息到名字 (Packing information into names) 2.1  use specific words GetPage() 不如 FetchPage() 和 Dow ...

  5. Intent的用法总结(不进你会后悔的)

    下面列出几种Intent的用法 下面的代码片段通过谷歌搜索 Intent intent = new Intent(); intent.setAction(Intent.ACTION_WEB_SEARC ...

  6. ubuntu12.04下helloworld驱动从失败到成功过程

    最近在看linux的设备驱动程序,写一个简单的helloworld程序都花了我好久的时间,具体过程如下: 编写helloworld.c 编写Makefile 注意,makefile中的命令那里是一个t ...

  7. es5 - array - sort

    /** * 描述:该sort()方法对数组中的元素进行排序并返回该数组,默认排序顺序是根据字符串Unicode代码点. * 语法:arr .sort([compareFunction]) * 参数: ...

  8. Linux回环接口(loop-back/loopback)

    回环接口(loop-back/loopback) Moakap整理 Loopback接口是一个虚拟网络接口,在不同的领域,其含义也大不一样. 1. TCP/IP协议栈中的loopback接口 在TCP ...

  9. ACE-Streams架构简介及应用

    一概述 Streams框架是管道和过滤构架模式的一种实现,主要应用于处理数据流的系统.其实现以Task框架为基础.Task框架有两个特性非常适用于Streams框架:一是Task框架可用于创建独立线程 ...

  10. 通过CSS3,实现元素覆盖效果

    在非常多站点中,我们都能够看到这种效果.当用户鼠标进入某一个元素后,下方就会有遮罩层上浮动画,如图: 今天我们就用hover伪类加上css3实现,没有使用不论什么JS <!DOCTYPE htm ...