php面试题(实时更新)- 最全

这篇博客详细列举了PHP面试中常见的问题,涵盖了PHP的基础知识、字符串和数组操作、面向对象、运行原理、编码规范、设计模式、内存管理等多个方面。同时,还提及了面试中可能涉及的数据库、HTTP协议、缓存、正则表达式、Web服务器等知识,是准备PHP面试的宝贵资料。
摘要由CSDN通过智能技术生成

尽量涵盖,这里只写关于php的,基础肯定是各种字符串操作,数组操作,然后面向对象的理解。其实这里面好多好多东西都是平时用不到的,但这就是基础,面试官问到的东西只是你知道的很少很少一部分,但这就是你们交涉的全部所以还你是得让自己尽可能知道的多。写这些东西没有应试教育的意思,虽然有的东西平时不会用,但对你绝对都是有帮助的

1 PHP是用什么语言编写的

php是用c写的

扩展:php3 php4 php5的主要区别是什么,php6的新特征有哪些?

这个问题真恶心,等我以后心情好了在回答吧

2 目前PHP的最高版本是

2013.9.12现在应该是php5.5

3  PHP的三种注释方式

天啊,我竟然知道两种,太可怕了  # 竟然也是 好吧

4 请列出PHP的8种数据类型

字符串 数组 对象 数值类型 整型 xml 浮点 布尔值 特殊的有Null和resource(说实话我只用过前五种)

5  PHP中有几种形式装载代码,并列举,以包含同目录下的Config.php文件为例?

require include require_once include_once

require一般用在文件的头部包含文件,执行php时包含这个文件使它成为php的一部分

include一般用在流程控制中,用到时再包含

区别是require遇到错误不会往下执行,而include会继续执行

require_once和include_once的作用是避免重复包含,也就是说如果不小心包含了同一个文件,用这两个函数会只包含一次

6 PHP中===表示什么意思,以及与==的区别,什么情况下==是true,===是false

这个问题也是比较常见的,不过巨简单。==是比较表达式两边的值,而===会比较数据类型,比如$a  = 1;$b = '1'; ==的话就为true,但===就为false,因为数据类型不同

7 header的作用是什么,以及它的限制

sorry,这个需要先看http协议,等有功夫在回答这个问题,目前只知道这是做跳转用的

8 strstr和stristr的区别

这种字符串操作的方法但凡加了i的一般都是不区分大小写的意思。这里在普及一下strstr的做用吧,strstr默认返回从指定字符到该字符串结束的字符

9 php如何获得浏览器信息

看吧,php能做的事还是不少的,哎,我这么说会不会暴露了我的知识面比较窄的缺陷呢,哈哈

$_SERVER['HTTP_USER_AGENT'];平时没用过这些东西

10 什么是URLRewriteing

说说我自己的理解吧,就是伪静态嘛!通过隐藏网页的访问地址以达到更好收录的的效果,可能有不对的地方,欢迎拍砖

11 如何遍历一个文件夹下所有的内容(考中几率非常高)

以前我都嫌麻烦,不去记这些东西,而且平时用的话我都是从网上搜索,但笔试的时候肯定不能让你从网上搜虽然这东西经常被考到,但我可以确定的是你写不出来对你影响不会很大,当然写出来了更好,之前我欧诺个的都是什么opendir 之类的这些傻×函数,刚才我知道了scandir这个函数,这是循环遍历文件夹的函数,非常实用奥

<?php
$dir = "."; //当前目录
list_file($dir);

function list_file($dir){
	$list = scandir($dir); // 得到该文件下的所有文件和文件夹
	foreach($list as $file){//遍历
		$file_location=$dir."/".$file;//生成路径
		if(is_dir($file_location) && $file!="." &&$file!=".."){ //判断是不是文件夹
			echo "------------------------sign in $file_location------------------";
			list_file($file_location); //继续遍历
		}
		echo "<br/>";
	}
}
?>


12 二分法和冒泡排序(为什么把这俩在一起说呢,因为他俩都是经常被考到的,而且对于我们的思维逻辑很重要)

二分法 array(1,2,3,4,5,6,7)取出其中一个值的键名

先说一个网上很常见的方法

function Dichotomy($php,$k,$low=0,$max=0)

  {

    if(count($php)!= 0 and $max == 0)

    {

        $max = count($php);

    }

    if($low <= $max)

    {

    $mid = intval(($low+$max)/2);

    if($php[$mid] == $k)

    {

        return $mid;

    }

    else if($k < $php[$mid])

    {

        return Dichotomy($php,$k,$low,$mid-1);

    }

    else

    {

        return Dichotomy($php,$k,$mid+1,$max);

    }

    }

    return -1;

  }

  $php = array('1','2','3','4','5','6');

  echo Dichotomy($php,5);

?>
这个方法确实可以,我也试过。但是,我觉得这种方法不好,确切的说是不准确。因为这种方法是以顺序的不间断的数组为基础的,比如上面所说的

$max = count($php);$max很明显不是最大值,而是数组的总长度,所以这里不准确。看看我写的方法吧

 

function dis($arr,$var) {

     $max = count($arr);

     $mid = intval($max/2);
     if($arr[$mid-1] == $var){

        return $mid;

     }
     if($arr[$mid-1] >= $var){
         $arrs = array_slice($arr,0,$mid)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值