`

php 面试

 
阅读更多

js 内置对象

String对象:处理所有的字符串操作
Math对象:处理所有的数学运算
Date对象:处理日期和时间的存储、转化和表达
Array对象:提供一个数组的模型、存储大量有序的数据
Event对象:提供JavaScript事件的各种处理信息


error_reporting(-1);// 报告所有 PHP 错误
error_reporting(0); // 关闭所有PHP错误报告

 

PHP的意思Hypertext Preprocessor

php操作json json_decode json_encode

 

php5魔术函数、魔术常量

__construct() __destruct()__call() __get() __set() __toString() __clone()
__sleep() __wakeup()__isset() __unset()__set_state()__autoload()

__LINE____FILE____FUNCTION____CLASS__ __METHOD__

 

防止SQL注射漏洞一般用__addslashes___函数。

 

如何修改SESSION的生存时间
方法1:将php.ini中的session.gc_maxlifetime设置为9999重启apache
方法2:$savePath = "./session_save_dir/";
session_save_path($savePath);
session_set_cookie_params($lifeTime);
session_start();
方法3:setcookie() and session_set_cookie_params($lifeTime);

 

include 和 include_once 有什么分别?require 又如何?
include():容许你在脚本中把同一个档案插入多次,若果档案不存在,它会发出系统警告并继续执行脚本,如果不被执行,所引用文件就不包含进来
include_once():它跟 include() 的功能相似,在脚本的执行期间,有关档案只会被插入一次。
require():跟 include() 差不多,但若果档案不存在,它会发出系统警告,这个警告会引致致命错误令脚本中止执行不管文件执行不执行,都要将所引用文件包含进来

 

php生成和解析xml

用DOMDocument

 

概述MVC体系结构。

答:MVC包括三类对象,model是模型,view是视图,controller是控制器,它定义用户界面对用户输入的响应方式。

在MVC体系中,模型通常被称为"业务逻辑",是真正完成任务的代码,视图就是使用界面,反映数据的变化。控制器控制着模型和视图之间的交互过程,它决定着向用户返回怎样的视图、检查通过界面输入的信息以及选择处理输入信息的模型

在MVC中,表示层和逻辑层分离,各部分可相互独立进行开发,便于开发和维护,提高了开发效率。

 

表单中 get与post提交方法的区别?
1)get是从服务器上获取数据,post是向服务器传送数据。
2)get是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,在URL中可以看到。post是通过HTTPpost机制,将表单内各个字段与其内容放置在HTML HEADER内一起传送到ACTION属性所指的URL地址。用户看不到这个过程。
3)get传送的数据量较小,不能大于2KB。post传送的数据量较大,一般被默认为不受限制
4)get安全性非常低,post安全性较高。

 

写出session的运行机制
用 户A访问站点Y,如果站点Y执行了session_start();(以下假定session_start()总是存在)那么会产生一个 session_id,这个session id一般会以COOKIE的形式保存到用户A(我们可以通过在php.ini里设置session.use_only_cookies为1,强制 SESSION ID必须以COOKIE传递。)。这时候SESSION ID表现为$_COOKIE[’PHPSESSID’];(PHPSESSID可用session_name()函数来修改)
用户A接着访问,这个session id($_COOKIE[’PHPSESSID’])就会在A每次访问Y的时候传送到站点Y。
在站点Y上,会有这么一个目录,是用来保存SESSION的实际数据的。站点Y接收到session id,然后通过session id,来获得与SESSION数据的关联,并返回SESSION数据。

cookie机制

cookie 是一种在远程浏览器端储存数据并以此来跟踪和识别用户的机制。 PHP在http协议的头信息里发送cookie, 因此 setcookie() 函数必须在其它信息被输出到浏览器前调用,这和对 header() 函数的限制类似

 

session与cookie的区别?
cookie机制采用的是在客户端保持状态的方案,而session机制采用的是在服务器端保持状态的方案。

 

PHP可以和sql server/oracle等数据库连接吗?(1分)
可以


请写出PHP5权限控制修饰符(3分)
Private protected public


请写出php5的构造函数和析构函数(2分)
__construct __destruct


$a = 'abcdef'; 请取出$a的值并打印出第一个字母(1分)
echo $a{0}; //正则表达式
echo $a[0]; //字符串也是一个数组

 

如何实现字符串翻转?

strrev() 或

$str = "abcdefg";
function strrevv($str)
{
$len=strlen($str);
$newstr = '';
for($i=$len;$i>=0;$i--)
{
$newstr .= $str{$i};
}
return $newstr;
}
$showstr = strrevv($str);
echo $showstr."<br>";

 

A.判断一个变量的值是否为空: empty
B.判断一个变量是否为NULL: is_null
C.判断一个变量是否存在: isset
D.释放一个变量: unset

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

1 2

 

<?
$GLOBALS['var1'] = 5;
$var2 = 1;
function get_value(){
global$var2;
$var1 = 0;
return $var2++;
}
get_value();
echo $var1;
echo $var2;
?>
5 2 没有global就是5 1

 

<?
$count = 5;
function get_count(){
static $count = 0;
return $count++;
}
echo $count;
++$count;
echo $count;
echo get_count();
echo get_count();
?>
5 6 0 1

 

<?
$a6 = 'null';
$a8 = array(array());
echo empty($a6) ? 'true' : 'false';
echo empty($a8) ? 'true' : 'false';
?>
false false //字符串null //一个元素为array
如果 var 是非空或非零的值,则empty() 返回 FALSE。换句话说,""、0、"0"、NULL、FALSE、array()、var $var; 以及没有任何属性的对象都将被认为是空的,如果 var 为空,则返回 TRUE。

 

分别说出echo、print()、print_r()、printf()、sprintf的区别。
echo() :用于输出一个或多个字符串,没有返回值,速度快于其他
print():该函数功能和echo()一样,不同的是print()有返回值。成功返回 1 ,失败则返回 0 。
printf():该函数是用于输出格式化的字符。
sprintf():该函数有用法和printf()的格式一样,但sprintf()不是输出字符串,而是将格式化的字符串以返回值的形式写入到一个变量中。
print_r():可以打印出复杂类型变量的值(如数组,对象),如果给出的是 string、integer 或 float,将打印变量值本身。如果给出的是 array,将会按照一定格式显示键和元素。

 

说明:
全等(===):如果 $a 和 $b 具有相同的键/值对并且顺序和类型都相同则为 TRUE。
相等(==):如果 $a 和 $b 具有相同的键/值对则为 TRUE。

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

 

1. 用PHP打印出前一天的时间,打印格式是2007年5月10日 22:21:21
echo date('Y-m-d H:i:s', strtotime('-1 day'));

 

php获取访客ip

$_SERVER["REMOTE_ADDR"];


2. PHP代码如下:
$a="hello";
$b=&$a;
unset($b);
$b="world";
echo $a;
其结果是?答案为:hello


3. PHP代码如下:
$str="cd";
$$str="landog";
$$str.="ok";
echo $cd;
其结果是? hotdogok

4. 用PHP写一段代码,实现不使用第3个变量,交换$a、$b的值,$a、$b的初始值自己定。
$a = $a^$b;
$b = $b^$a;

11. 移动任意一位数或符号,使等式成立, 102 = 101-1。注:是移动不是交换,等号不能分开。

将102的2挪到右上角
12. 规律题,3、1、4、1、5、9、2、( ), 请按照规律在括号内写出下一表达式。

答案为6,因为∏=3.1415926
13. 规律题,5、8、-3、5、-2、3、-1、( ),请按照规律在括号内写出下一表达式。
答案为2,规律为n=(n-2) – |(n-1)| ,n>=3

 

写一个 函数,array_remove(),要求最简洁的清除 数组中值为$v的项。

function array_remove(&$array, $var) {
$index = array_search($var, $array);
if ($index !== false)
unset($array[$index]);
}

 

以下登陆代码安全上有什么问题?
<?
$m=$_GET['m'];
$user=$_GET['user'];
$pass=$_GET['pass'];
$include($m."do/php");
$sql="select count(*) as b from user where username='".$user."'and password='".$pass."';
$r=mysql_query($sql);
list($count)=@mysql_fetch_array($r);
if($count>1){

......登陆成功操作
}
?>

注入和远程攻击mysql_real_escape_string()

 

写一个程序,远程抓取http://www.google.cn/search?q=php网页内容,并匹配出该网址网页内的所有超链接地址,写入url.txt

$content = file_get_contents('http://www.google.cn/search?q=php');
$pattern = '/href=\"(.+?)\"/';
preg_match_all($pattern, $content, $matches);
$content = '';
foreach ($matches[1] as $mt)
$content .= $mt."\n";
file_put_contents('url.txt', $content);

 

1.以下哪一句不会把 John 新增到 users 阵列?
$users[] = 'john';
成功把 John 新增到阵列 users。
array_add($users,’john’);
函式 array_add() 无定义。
array_push($users,‘john’);
成功把 John 新增到阵列 users。
$users ||= 'john';
语法错误。

2.sort()、assort()、和 ksort() 有什么分别?它们分别在什么情况下使用?

sort()
根据阵列中元素的值,以英文字母顺序排序,索引键会由 0 到 n-1 重新编号。主要是当阵列索引键的值无关疼痒时用来把阵列排序。
asort()
与 sort() 一样把阵列的元素按英文字母顺序来排列,不同的是所有索引键都获得保留,特别适合替联想阵列排序。
ksort()
根据阵列中索引键的值,以英文字母顺序排序,特别适合用于希望把索引键排序的联想阵列。

3.以下的代码会产生什么?为什么?

$num=10;
functionmultiply(){
$num=$num*10;
}
multiply();
echo$num;10。

4. reference 跟一个正规的变量有什么分别?如何 pass by reference?在什么情况下我们需要这样做?
Reference 传送的是变量的地址而非它的值,所以在函式中改变一个变量的值时,整个应用都见到这个变量的新值。
一个正规变量传送给函式的是它的值,当函式改变这个变量的值时,只有这个函式才见到新值,应用的其他部分仍然见到旧值。

$myVariable = "its' value";

Myfunction(&$myVariable); // 以 reference 传送参数

以 reference 传送参数给函式,可以使函式改变了的变量,即使在函式结束后仍然保留新值。

6.foo() 与 @foo() 有什么分别?
foo() 会执行这个函式,任何解译错误、语法错误、执行错误都会在页面上显示出来。
@foo() 在执行这个函式时,会隐藏所有上述的错误讯息。
很多应用程式都使用 @mysql_connect() 和 @mysql_query 来隐藏 mysql 的错误讯息,我认为这是很严重的失误,因为错误不该被隐藏,你必须妥善处理它们,可能的话解决它们。

7.你如何替 PHP 的应用程式侦错?
我并不常这样做,我曾经试过很多不同的侦错工具,在 Linux 系统中设定这些工具一点也不容易。不过以下我会介绍一个近来颇受注目的侦错工具。
PHP - Advanced PHP Debugger 或称 PHP - APD,第一步是执行以下的指令安装:

pear install apd安装后在你的脚本的开头位置加入以下的语句开始进行侦错:

apd_set_pprof_trace();执行完毕,打开以下档案来查阅执行日志:
apd.dumpdir
你也可以使用 pprofp 来格式化日志。
详细的资料可以参阅http://us.php.net/manual/en/ref.apd.php

9.你会如何定义一个没有成员函式或特性的类别 myclass?

class myclass{}

10.你如何产生一个 myclass 的物件?

$obj = new myclass();

11.在一个类别内如何存取这个类别的特性及变改它的值?
使用语句:$this->propertyName,例如:

class myclass{ private $propertyName; public function __construct() { $this->propertyName = "value"; }}

13.以下哪一个函式可以把浏览器转向到另一个页面?
redir()
这不是一个 PHP 函式,会引致执行错误。
header()
这个是正确答案,header() 用来插入卷头资料,可以用来使浏览器转向到另一个页面,例如:
header("Location:
http://www.search-this.com/");
location()
这不是一个 PHP 函式,会引致执行错误。
redirect()
这不是一个 PHP 函式,会引致执行错误。


14.以下哪一个函式可以用来开启档案以便读/写?
fget()
这不是一个 PHP 函式,会引致执行错误。
file_open()
这不是一个 PHP 函式,会引致执行错误。
fopen()
这是正确答案,fopen() 可以用来开启档案以便读/写,事实上这个函式还有很多选项,详细资料请参阅 php.net。
open_file()
这不是一个 PHP 函式,会引致执行错误。
15.mysql_fetch_row() 和 mysql_fetch_array() 有什么分别?
mysql_fetch_row() 把数据库的一列储存在一个以零为基数的阵列中,第一栏在阵列的索引 0,第二栏在索引 1,如此类推。mysql_fetch_assoc() 把数据库的一列储存在一个关联阵列中,阵列的索引就是栏位名称,例如我的数据库查询送回“first_name”、“last_name”、 “email”三个栏位,阵列的索引便是“first_name”、“last_name”和“email”。mysql_fetch_array() 可以同时送回 mysql_fetch_row() 和 mysql_fetch_assoc() 的值。
16.下面的代码用来做什么?请解释。

$date='08/26/2003';print ereg_replace("([0-9]+)/([0-9]+)/([0-9]+)","\\2/\\1/\\3",$date);

这是把一个日期从 MM/DD/YYYY 的格式转为 DD/MM/YYYY 格式。我的一个好朋友告诉我可以把这个正规表达式拆解为以下的语句,对于如此简单的表示是来说其实无须拆解,纯粹为了解说的方便:

// 对应一个或更多 0-9,后面紧随一个斜号$regExpression = "([0-9]+)/";// 应一个或更多 0-9,后面紧随另一个斜号$regExpression .= "([0-9]+)/";// 再次对应一个或更多 0-9$regExpression .= "([0-9]+)";至于\\2/\\1/\\3则是用来对应括号,第一个括号对的是月份,第二个括号对应的是日期,第三个括号对应的是年份。

 

17.给你一行文字 $string,你会如何编写一个正规表达式,把 $string 内的 HTML 标签除去?
首先,PHP 有内建函式 strip_tags() 除去 HTML 标签,为何要自行编写正规表达式?好了,便当作是面试的一道考题吧,我会这样回答:

$stringOfText = "<p>This is a test</p>";

$expression = "/<(.*?)>(.*?)<\/(.*?)>/";

echo preg_replace($expression, "\\2", $stringOfText);// 有人说也可以使用 /(<[^>]*>)/ $expression = "/(<[^>]*>)/";

echo preg_replace($expression, "", $stringOfText);


19.你如何利用 PHP 解决 HTTP 的无状态本质?
最主要的俩各选择是 session 和 cookie。使用 session 的方法是在每一页的开始加上 session_start(),然后利用 $_SESSION 散列表来储存 session 变量。至于 cookie 你只需记着一个原则:在输出任何文字之前调用 set_cookie() 函式,此外只需使用 $_COOKIE 散列表便可以存取所有 cookie 变量。
还有一个不那么可靠的方法,就是利用访客的 IP 地址,这个方法有特定的危险性。


20.GD 函式库用来做什么?
这 个可能是我最喜欢的函式库,自从 PHP 4.3.0 版本后 GD 便内建在 PHP 系统中。这个函式库让你处理和显示各式格式的图档,它的另一个常见用途是制作所图档。GD 以外的另一个选择是 ImageMagick,但这个函式库并不内建于 PHP 之中,必须由系统管理员安装在伺服器上。


21.试写出几个输出一段 HTML 代码的方法。
嗯,你可以使用 PHP 中任何一种输出语句,包括 echo、print、printf,大部分人都使用如下例的 echo:

echo "My string $variable";你也可以使用这种方法:

echo <<<END This text is written to the screen as output and this $variable is parsed too. If you wanted remarks must be on a line of its own, and can't contain any extra white space.END;

 

6 请举例说明在你的开发过程中用什么方法来加快页面的加载速度
答:要用到服务器资源时才打开,及时关闭服务器资源,数据库添加索引,页面可生成静态,图片等大文件单独服务器。使用代码优化工具啦

1 请说明 PHP 中传值与传引用的区别。什么时候传值什么时候传引用?
传值只是把某一个变量的值传给了另一个变量,而引用则说明两者指向了同一个地方。

 
分享到:
评论

相关推荐

    PHP面试大全-基础篇

    ### PHP面试大全-基础篇知识点解析 #### 一、PHP基础知识 **1.1 堆栈** - **堆(stack)**:在PHP中主要用于存储动态分配的内存块,例如对象和数组。堆上的数据是在运行时动态分配和释放的。 - **栈(stack)**:用于...

    腾讯PHP面试题_腾讯php面试题_

    最新腾讯PHP面试题1. php 的垃圾回收机制 PHP 可以自动进行内存管理,清除不需要的对象。 PHP 使用了引用计数 (reference counting) GC 机制。 每个对象都内含一个引用计数器 refcount,每个 reference 连接到对象,...

    2018 BAT最新 php面试必考题最新版本.doc

    根据提供的文档内容,我们可以整理出一系列关于PHP面试的相关知识点,特别是针对那些希望进入BAT等大公司的程序员们。以下是对文档中提及的一些关键知识点的详细解释: ### 1. 表单中GET与POST提交方法的区别 - **...

    新浪PHP面试题新浪PHP面试题

    【标题】"新浪PHP面试题"所涉及到的知识点主要涵盖了PHP编程语言在实际应用和面试中的常见问题。作为中国知名互联网公司新浪的面试题目,这些题目反映了新浪对PHP开发人员的技术要求和期望。 【描述】虽然描述部分...

    php面试题大全

    "PHP面试题大全"这个资料集,无疑是为了帮助PHP开发者更好地准备面试而设计的。它可能包含了从基础语法到高级特性的各种问题,旨在测试候选人的全面理解以及解决实际问题的能力。让我们深入探讨一下这个主题,了解...

    传智php面试宝典

    《传智PHP面试宝典》是一本专门为PHP开发者准备的面试指南,旨在帮助读者全面掌握PHP领域的核心知识,提升在面试中的竞争力。该资源包含了上卷和下卷两部分,全面覆盖了PHP语言基础、高级特性、Web开发、框架应用、...

    PHP面试题_php_

    对于提供的文档列表,如"面试题4.doc、面试题3.doc、笔试题.doc、面试题2.doc、PHP面试题",这些文档很可能是具体的面试题目集合,通过研读并解答它们,可以更好地准备面试,检验自己的PHP技能。

    php面试题及答案

    在PHP面试中,掌握核心知识点是至关重要的。以下是基于题目提供的信息所涵盖的一些关键知识点: 1. **数据库优化** - **字段属性选择**:在设计数据库时,尽可能使用NOT NULL约束,避免NULL值,这有助于提高查询...

    php面试题和答案整理

    "PHP 面试题和答案整理" 在 PHP 面试中,常见的问题有:数组操作、函数调用、变量传递、错误处理等。下面是对这些问题的解释和答案: 1. 数组操作 在 PHP 中,数组是一个非常重要的数据结构。数组可以使用 `array...

    Php面试宝典100题汇总.doc

    ### PHP面试宝典100题汇总知识点解析 #### 1. Http与Https的区别 - **安全性**: HTTP采用明文传输,数据容易被截获;HTTPS则是基于SSL/TLS的安全协议,提供加密传输,保障了数据的安全性。 - **连接方式与端口**: ...

    php面试题汇总

    ### PHP面试题知识点详解 #### 一、GET与POST提交方法的区别 - **GET**: 这种方法通过URL参数传递数据。GET请求的数据会在URL中显示出来,这意味着它不适合用于发送敏感信息,如密码等。此外,由于URL长度限制,...

    php面试题及答案大全

    这份"php面试题及答案大全"提供了丰富的资源,帮助准备PHP面试的候选人强化自己的知识体系。本文将深入探讨这些面试题和答案所涵盖的重要PHP知识点。 首先,PHP是一种广泛用于Web开发的服务器端脚本语言,它的全称...

    最近php面试题总结

    ### 最近PHP面试题总结 随着技术的不断发展与更新,PHP作为一门重要的后端开发语言,在面试中的考察点也日益丰富。本文将根据近期招聘网站上出现的一些公司的PHP面试题目进行整理归纳,希望能为在北京寻找工作的...

    PHP面试大全-高级篇

    PHP 面试大全-高级篇 本资源摘要信息涵盖了 PHP 面试高级篇的知识点,包括 SQL 查找、迷宫算法实现、MySQL 查询优化、MySQL 索引优化存储引擎的选择等内容。 SQL 查找 在 SQL 查找中,我们可以使用函数来查找表中...

    PHP面试总结,知识结构大纲

    标题《PHP面试总结,知识结构大纲》揭示了本文的核心内容,即在面试中考察的PHP相关知识点总结。这些知识点覆盖了PHP的基础概念,例如函数变量的使用,以及数据库系统的优化等,并且内容从浅入深,逐步深入。 首先...

    php面试宝典,面试大全

    根据给定的文件信息,以下是从“PHP面试宝典,面试大全”中提炼出的关键知识点,涵盖基础概念、技术细节及应用实践。 ### 基础知识点 #### GET与POST提交方法的区别 - **GET**: 请求信息通过URL参数传递,适用于...

    php面试题目答案php面试题目答案php面试题目答案

    根据提供的文件信息,我们可以整理出以下与PHP相关的面试知识点: ### 1. 日期与时间操作 **描述:** 在PHP中,处理日期与时间是非常常见的需求之一。本例展示了如何获取当前时间以及前一天的时间。 **示例代码:...

    php面试题目及答案

    ### PHP面试题目及答案解析 #### 1. 如何显示当前时间格式为2006-5-10 22:21:21? ```php echo date('Y-m-d H:i:s', strtotime('-1 day')); ``` **解析:** - `strtotime('-1 day')` 函数用于获取一天前的时间戳。 ...

    韩顺平老师整理的PHP面试题大全(含答案)

    【PHP面试题大全】是韩顺平老师精心整理的一份涵盖广泛PHP知识的面试资源,旨在帮助PHP开发者准备面试,提升技术能力。这份资料包含了PHP基础、进阶、框架、数据库、Web安全等多个领域的常见问题及答案,是深入理解...

Global site tag (gtag.js) - Google Analytics