PHP 程序开发笔试题

作者 : 超级管理员 本文共5190个字,预计阅读时间需要13分钟 发布时间: 2021-08-29 共69人阅读

 

一、基础题

  1. 写出如下程序的输出结果
<?

    $str1 = null;

    $str2 = false;

    echo $str1==$str2 ? 'true' : 'false';

    $str3 = '';

    $str4 = 0;
    
    echo $str3==$str4 ? ''true' ' : 'false';

    $str5 = 0;

    $str6 = '0';echo $str5===$str6 ? ''true' ' :'false';

?>

结果:true true false

 

 

  1. 写出如下程序的输出结果
<?

$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';echo '<br/> ';
echo isset($a1) ? 'true' : 'false';
echo isset($a2) ? 'true' : 'false';
echo isset($a3) ? 'true' : 'false';
echo isset($a4) ? 'true' : 'false';
echo isset($a5) ? 'true' : 'false';
echo isset($a6) ? 'true' : 'false';
echo isset($a7) ? 'true' : 'false';
echo isset($a8) ? 'true' : 'false';
?>

结果:
true true true true true false true false
false true true true true true true true

 

 

  1. 写出如下程序的输出结果
<?

$test = 'aaaaaa';
$abc = & $test;
unset($test);
echo $abc;
?>
结果:aaaaaa

 

 

  1. 写出如下程序的输出结果
<?

$count = 5;
function get_count(){
static $count = 0;
return $count++;
}
echo $count;
++$count;
echo get_count();
echo get_count();
?>
结果:501

 

 

  1. 写出如下程序的输出结果
<?

$GLOBALS['var1'] = 5;
$var2 = 1;
function get_value(){
global $var2;$var1 = 0;
return $var2++;
}
get_value();
echo $var1;
echo $var2;
?>
结果:52

 

 

  1. 写出如下程序的输出结果
<?

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);
?>
结果:12

 

 

  1. 使用三种以上方式获取一个文件的扩展名要求:dir/upload.image.jpg,找出 .jpg 或者 jpg ,必须使用 PHP 自带的处理 函 数 进 行 处 理 , 方 法 不 能 明 显 重 复 , 可 以 封 装 成 函 数 , 比 如get_ext1($file_name), get_ext2($file_name)。
方法一:

function get_ext1 ($file_name) {
$extend ="";
$pt=strrpos($file_name, ".");
if ($pt) $extend =substr($file_name, $pt+1, strlen($file_name) - $pt);
return ($extend);
}

方法二:
function get_ext2($file_name)
{
$extend =explode("." , $file_name);
$va=count($extend)-1;
return $extend[$va];
}

方法三:function get_ext3($file_name)
{
$extend =explode("." , $file_name);
return end($extend);
}

 

 

  1. 写一个函数,算出两个文件的相对路径,$a = ‘/a/b/c/d/e.php’;$b = ‘/a/b/12/34/c.php’;计算出在 c 文件中调用 e 文件可以这么些../../c/d/e.php
<?php

function getRelative($a , $b){
$arr_a = explode("/" , $a) ;
$brr_b = explode("/" , $b) ;
$i = 1 ;
while (true) {if($arr_a[$i] == $brr_b[$i]) {
$i ++ ;
} else {
break ;
}
}
$c = count($brr_b) ;
$d = count($arr_a) ;
$e = ($c>$d)?$c:$d ;
$str1 = '' ;
$str2 = '' ;
for ($j = $i ;$j<$e ;$j++) {
if(isset($arr_a[$j])) {
if($j<($d-1)){
$str1 .= $arr_a[$j] . "/" ;
} else {
$str1 .= $arr_a[$j] ;
}
}
if(isset($brr_b[$j])) {
$str2 .= "../" ;}
}
return $str2 . $str1 ;
}
$a = "/c/b/c/d/k/h/t/e.php" ; //实例调用
$b = "/a/b/e/f/h.php" ;
$relative = getRelative($a,$b) ;
var_dump($relative);
?>

 

 

  1. 写出将 IP 字符串 127.0.0.1 转换为 127000000001 长整型数字的函数
function getip($userip){

$ip = $userip;

$iparr = explode(".",$ip);

$j=count($iparr);

for($i=0;$i<$j ;$i++ ){

$ipi.=sprintf("%03d", $iparr[$i]);

}

return $ipi;}

 

 

  1. 请说明在 PHP 中“” 和‘’ 两个引号的区别

     答:双引号里面的字段会经过编译器解释,然后再当作 HTML 代码输出。单引号里面的不进行解释,直接输出。单引号解析的时间比双引号快单引号支持\转义符,双引号支持的转义符更多

  1. 对一个网站或动态页面进行压力测试,你都使用什么工具?

答:Jmeter webbench

  1. 在 MYSQL 数据库内如何让自动增加字段从 0 开始?

答:用”truncate table 表名” 即可

  1. 现有字段 A 和 B,在两个字段做一个 C 索引,请写出在 WHERE 中分别使用 A,B,A 和 B,B 和 A 四个之间的区别。

答: 符合索引: A、A 和 B 索引会用到,提高查询效率;

14. 你用什么方法检查 PHP 脚本的执行效率和数据库 SQL 的查询效率,并定位和分析脚本执行和数据库查询的瓶颈所在?

答:PHP 用 Xdebug,MYSQL 用 EXPLAND

  1. 优化超大数据表你会采取哪些方法?

答:1.硬件扩展:内存,CPU 提升,增加服务器性能

  1.   优化数据库表,优化索引,

      3.切割数据库表,分摊查询压力

  1. 利用缓存。
  2. 打开 php.ini 中的 Safe_mode,会影响哪些函数?

答:Safe_mode 是 php 非常重要的内嵌的安全机制。默认是关闭的.

         1.用户输入输出函数(fopen() file()require(),只能用于调用这些函数有相同脚本的拥有者

         2.创建新文件(限制用户只在该用户拥有目录下创建文件)

         3.用户调用popen() systen()exec()等脚本,只有脚本处在safe_mode_exec_dir配置指令指定的目录中才可能

         4.mysql 服务器所用的用户名必须与调用 mysql_connect()的文件的拥有者用户名相同

  1. VI 编辑器中,选中、复制、粘贴、删除的命令各是什么?

答:没有用 VI 编辑器; 用 EditPlus 手写代码

  1. 在 Linux 下定时执行一个程序的方法都有哪些?

答:不是太熟悉 LINUX 系统,刚刚接触 LINUX;可使用 at 命令定期运行程序:

例如:Fixed at 10:30pm 任务在晚上 10 点 3.也可以使用 cron 来定期执行任务.

  1. 如何查看 Linux 的内核版本和设置系统时间默认编码?

答:

lsb_release –a 查看 linux 版本

cat /proc/version查看 Linux 的内核版本

date –s 设置系统时间

export LC_ALL=”zh_CN.GBK”设置系统编码

20. 将两台服务器上的目录做到即时同步你会怎么做?

答:1.通过 cron 监控变更

  1. rsync 两台服务器目录同步功能实现。使用 rsync 命令连接服务器,实现文件同步.

二、算法题

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

}
  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;
}
}
  1. 写一个二维数组排序算法函数,能够具有通用性,可以调用 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;

}

 

本站所发布的资源均来源于互联网,仅限用于研究学习,不得将软件用于商业或者非法用途,否则一切后果请用户自负!如果侵犯了您的权益请与我们联系!您必须在下载后的24个小时之内,从您的手机和电脑中彻底删除。 如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请与我们联系处理!
互利网 » PHP 程序开发笔试题

常见问题FAQ

免费下载或者VIP会员专享资源能否直接商用?
本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
提示下载完但解压或打开不了?
最常见的情况是下载不完整:可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。 若排除这种情况,可在对应资源底部留言,或联络我们。

发表评论