搜索
首页后端开发php教程PHP经典面试题(基础型I)附答案_PHP教程

PHP经典面试题(基础型I)附答案_PHP教程

Jul 14, 2016 am 10:10 AM
php招聘求职程序员笔试答案经典试题面试

 

求职与招聘 往往少不了面试与笔试,作为一个php程序员、多多少少都会有类似的经历……以下是本人收集并整理的PHP面试题目,希望对同行们有所帮助,找到一份合适的php开发工作!(共三节)

 

以下是面试的题目(一)

 

1、用PHP打印出前一天的时间格式是2009-02-10 22:21:21(2分)

echo date('Y-m-d H:i:s', strtotime('-1 day'));

或者

$yesterday = time() - (24 * 60 * 60);

echo 'today:'.date('Y-m-d H:i:s')."n";

echo 'yesterday:'. date('Y-m-d H:i:s', $yesterday)."n";

 

2、echo(),print(),print_r()的区别(3分)

echo是PHP语句, print和print_r是函数,语句没有返回值,函数可以有返回值(即便没有用) 

print只能打印出简单类型变量的值(如int,string)

print_r可以打印出复杂类型变量的值(如数组,对象)

echo -- 输出一个或者多个字符串

 

3、能够使HTML和PHP分离开使用的模板(1分)

smarty,Heyes Template Class等

 

5、使用哪些工具进行版本控制?(1分)

CVS和SVN,SVN号称下一代CVS,功能强大,不过CVS是老牌,市占率很高.我一直用SVN,题目是问用什么工具呃,这个可能需要这么回答:CVS Server on Apache作服务端,WinCVS作客户端;Subversion on Apache/DAV 做服务端,TortoiseSVN做客户端,或者Subclipse做客户端.

 

6、如何实现字符串翻转?(3分)

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."
";

 

 

---------------------------------------------------------------

7、优化MYSQL数据库的方法。(4分,多写多得)

(1).选取最适用的字段属性,应该尽量把字段设置为NOT NULL,这样在将来执行查询的时候,数据库不用去比较NULL值。

(2).使用连接(JOIN)来代替子查询(Sub-Queries)

(3).使用联合(UNION)来代替手动创建的临时表

(4).尽量少使用 LIKE 关键字和通配符

(5).使用事务和外键

或者

(1).数据库设计方面,这是DBA和Architect的责任,设计结构良好的数据库,必要的时候,去正规化(英文是这个:denormalize,中文翻译成啥我不知道),允许部分数据冗余,避免JOIN操作,以提高查询效率

(2).系统架构设计方面,表散列,把海量数据散列到几个不同的表里面.快慢表,快表只留最新数据,慢表是历史存档.集群,主服务器Read & write,从服务器read only,或者N台服务器,各机器互为Master

(3).(1)和(2)超越PHP Programmer的要求了,会更好,不会没关系.检查有没有少加索引

(4).写高效的SQL语句,看看有没有写低效的SQL语句,比如生成笛卡尔积的全连接啊,大量的Group By和order by,没有limit等等.必要的时候,把数据库逻辑封装到DBMS端的存储过程里面.缓存查询结果,explain每一个sql语句

(5).所得皆必须,只从数据库取必需的数据,比如查询某篇文章的评论数,select count(*) ... where article_id = 就可以了,不要先select * ... where article_id = 然后msql_num_rows.只传送必须的SQL语句,比如修改文章的时候,如果用户只修改了标题,那就update ... set title = where article_id = 不要set content = (大文本)

(6).必要的时候用不同的存储引擎.比如InnoDB可以减少死锁.HEAP可以提高一个数量级的查询速度

 

8、PHP的意思(送1分)

Hypertext Preprocessor

 

9、MYSQL取得当前时间的函数是?,格式化日期的函数是(2分)

now(), DATE_FORMAT(date,format)

 

10、实现中文字串截取无乱码的方法。(3分)

mb_substr()

 

 

---------------------------------------------------------------

11、您是否用过版本控制软件? 如果有您用的版本控制软件的名字是?(1分)

TortoiseSVN-1.2.6 svn-1.2.3

 

12、您是否用过模板引擎? 如果有您用的模板引擎的名字是?(1分)

smarty

 

13、请简单阐述您最得意的开发之作(4分)

这个自己想,因为你不再是菜鸟,每个人都有不同的思路,思路也会随之自己的知识而改变……

 

14、对于大流量的网站,您采用什么样的方法来解决访问量问题?(4分)

首先,确认服务器硬件是否足够支持当前的流量

其次,优化数据库访问。

第三,禁止外部的盗链。

第四,控制大文件的下载。

第五,使用不同主机分流主要流量

第六,使用流量分析统计软件。

 

-----------------------------------------------------------------

15、用PHP写出显示客户端IP与服务器IP的代码1分)

//显示客户端I

function get_client_ip() {#

if(getenv('HTTP_CLIENT_IP')) {

$client_ip = getenv('HTTP_CLIENT_IP');

} elseif(getenv('HTTP_X_FORWARDED_FOR')) {

$client_ip = getenv('HTTP_X_FORWARDED_FOR');

} elseif(getenv('REMOTE_ADDR')) {

$client_ip = getenv('REMOTE_ADDR');

} else {

$client_ip = $HTTP_SERVER_VAR['REMOTE_ADDR'];

}

return $client_ip;

}

//服务器IP

function get_server_ip(){

if (isset($_SERVER))

{

if($_SERVER['SERVER_ADDR']) $huoqu_ip=$_SERVER['SERVER_ADDR'];

else $huoqu_ip=$_SERVER['LOCAL_ADDR'];

}

else

{

$huoqu_ip=getenv('SERVER_ADDR');

}

return $huoqu_ip;

}

 

16、语句include和require的区别是什么?为避免多次包含同一文件,可用(?)语句代替它们? (2分)

require()和include()除了怎样处理失败之外在各方面都完全一样。include()产生一个警告而require()则导致一个致命错误。

换句话说,如果你想在丢失文件时停止处理页面,用require()。include() 就不是这样,脚本会继续运行。

require()无论如何都会包含文件,而include()可以有选择地包含.www.

代替用

include_once

require_once

 

17、如何修改SESSION的生存时间(1分).(没有测试)

$savePath = "./session_save_dir/";

$lifeTime = 24 * 3600;

session_save_path($savePath);

session_set_cookie_params($lifeTime);

session_start();

 

18、有一个网页地址, 比如PHPma主页: http://www.phpma.com,如何得到它的内容?($1分)

file_get_contents($url)

 

19、在HTTP 1.0中,状态码401的含义是(?);如果返回“找不到文件”的提示,则可用 header 函数,其语句为(?);(2分)

未授权(Unauthorized)

Header("http/1.0 403 Forbidden");

 

 

经典面试题(PHP基础型II)附答案来源:本站编辑 作者:phpma 时间:2009-02-13 Tag:PHP   经典面试题   (基础型II)   附答案   点击: 44 求职与招聘 往往少不了面试与笔试,作为一个php程序员、多多少少都会有类似的经历……以下是本人收集并整理的PHP面试题目,希望对同行们有所帮助,找到一份合适的php开发工作!(共三节)

 

以下是面试的题目(一), 下一篇:经典面试题(PHP基础型III)附答案 PHP已经赋予答案:

 

12、在PHP中,heredoc是一种特殊的字符串,它的结束标志必须?(1分)

在大部分语言里,双引号是字符串,单引号是字符。但是在PHP里,字符串的表现形式有3种。即:

 

单引号

双引号

定界符(heredoc syntax)

看见了吧,单引号居然可以用来表示字符串。那么如果我想表示单引号怎么办?和大多数语言一样,使用转义符号吧。即反斜线"".那么使用单引号和双引号有什么区别呢?我的观点是没有多大区别。唯一的区别就是双引号可以应用更多的转义符。

让我们定界符吧。它的语法是"

 

$str =

Hello, this is an example for HEREDOC Syntax.

Please attention to it.

EOD;

echo $str;

?>注意,这里的提供的标志符是EOD,中间的是字符串。

 

结束标志必须顶格写,并且要有分号结束

 

13、谈谈asp,php,jsp的优缺点(1分)--(具体请自己搜索)

 

14、谈谈对mvc的认识(1分)

MVC(Model/View/Controller)模式包括三类对象。Model是应用对象,View是它在屏幕上的表示,

Controller定义用户界面对用户输入的响应方式。

模型-视图-控制器(MVC)是80年代Smalltalk-80出现的一种软件设计模式,现在已经被广泛的使用。

1)模型(Model)

模型是应用程序的主体部分。模型表示业务数据,或者业务逻辑.

2)视图(View)

视图是应用程序中用户界面相关的部分,是用户看到并与之交互的界面。

3)控制器(controller)

控制器工作就是根据用户的输入,控制用户界面数据显示和更新model对象状态。

 

 

-------------------------------------------------------------------

15、写出发贴数最多的十个人名字的SQL,利用下表:members(id,username,posts,pass,email)(2分)

select members.username

from members

order by posts DESC

limit 10

 

16. 请说明php中传值与传引用的区别。什么时候传值什么时候传引用?(2分)

按值传递:函数范围内对值的任何改变在函数外部都会被忽略

按引用传递:函数范围内对值的任何改变在函数外部也能反映出这些修改 PHPma

优缺点:按值传递时,php必须复制值。特别是对于大型的字符串和对象来说,这将会是一个代价很大的操作。

按引用传递则不需要复制值,对于性能提高很有好处。

 

17. 在PHP中error_reporting这个函数有什么作用? (1分)

用来配置错误信息回报的等级

 

18. 请写一个函数验证电子邮件的格式是否正确 (2分)

//if the email address is valid, return true,else return false

function validateEmail($email)

{

if(eregi('^[_a-z0-9-]+(.[_a-z0-9-]+)*@[a-z0-9-]+(.[a-z0-9-]+)*$',$email) ){

return true;

}else{

return false;

}

}

 

19. 简述如何得到当前执行脚本路径,包括所得到参数。(2分)

echo $_SERVER['SCRIPT_FILENAME']."?".$_SERVER['QUERY_STRING'];

 

20.如何修改SESSION的生存时间. (1分)

setcookie()

session_set_cookie_params($lifeTime)

--------------------------------------------------------------------

 

21、JS表单弹出对话框函数是?获得输入焦点函数是? (2分)

alert(),prompt(),confirm()

focus()

 

22、JS的转向函数是?怎么引入一个外部JS文件?(2分)

window.location.href

 

23、foo()和@foo()之间有什么区别?(1分)

PHP 支持一个错误控制运算符:@。当将其放置在一个 PHP 表达式之前,该表达式可能产生的任何错误信息都被忽略掉。

注意: @ 运算符只对表达式有效。对新手来说一个简单的规则就是:如果能从某处得到值,就能在它前面加上 @ 运算符。例如,可以把它放在变量,函数和include()调用,常量,等等之前。不能把它放在函数或类的定义之前,也不能用于条件结构例如 if 和 foreach 等。

 

24、如何声明一个名为”myclass”的没有方法和属性的类? (1分)

class myclass{};

 

25、如何实例化一个名为”myclass”的对象?(1分)

$newmyclass = new myclass();

 

26、你如何访问和设置一个类的属性? (2分)

通过-〉

$newmyclass = new myclass();

$temp=$newmyclass->testvalue;

$newmyclass->testvalue="a";

 

27、mysql_fetch_row() 和mysql_fetch_array之间有什么区别? (1分)

mysql_fetch_row -- 从结果集中取得一行作为枚举数组

mysql_fetch_array -- 从结果集中取得一行作为关联数组,或数字数组,或二者兼有

 

--------------------------------------------------------------------

28、GD库是做什么用的? (1分)

GD库提供了一系列用来处理图片的API,使用GD库可以处理图片,或者生成图片。

在网站上GD库通常用来生成缩略图或者用来对图片加水印或者对网站数据生成报表。

 

29、指出一些在PHP输入一段HTML代码的办法。(1分)

print("
");

echo "
";

 

30、下面哪个函数可以打开一个文件,以对文件进行读和写操作?(1分)(c)

(a) fget() (b) file_open() (c) fopen() (d) open_file()

 

31、下面哪个选项没有将 john 添加到users 数组中? (1分) (b)(c)(d)

(a) $users[] = ‘john’;

(b) array_add($users,’john’);//这个选项不敢确定,但是测试着没有这个函数

(c) array_push($users,‘john’);

(d) $users ||= ‘john’;

 

32、下面的程序会输入是否?(1分)

$num = 10;

function multiply(){

$num = $num * 10;

}

multiply();

echo $num;

?>

否,局部变量

 

33、使用php写一段简单查询,查出所有姓名为“张三”的内容并打印出来 (2分)

表名User

Name Tel Content Date

张三 13333663366 大专毕业 2006-10-11

张三 13612312331 本科毕业 2006-10-15

张四 021-55665566 中专毕业 2006-10-15

 

请根据上面的题目完成代码:

$mysql_db=mysql_connect("local","root","pass");

@mysql_select_db("DB",$mysql_db);

$result=mysql_query("select * from User where Name='张三'");

while($row=mysql_fetch_array($result))

{

echo $row['Name'].$row['Tel'].$row['Content'].$row['Date'];

echo "
";

}

 

34、如何使用下面的类,并解释下面什么意思?(3)

 

class test{

function Get_test($num){

$num=md5(md5($num)."En");

return $num;

}

}

双重md5加密

$testObject = new test();

$encryption = $testObject->Get_test("xiaotian_ls");

 

经典面试题(PHP基础型III)PHP来源:本站编辑 作者:phpma 时间:2009-02-13 Tag:经典面试题(PHP基础型III)PHP   点击: 31 求职与招聘 往往少不了面试与笔试,作为一个php程序员、多多少少都会有类似的经历……以下是本人收集并整理的PHP面试题目,希望对同行们有所帮助,找到一份合适的php开发工作!(共三节)

 

以下是经典面试题(PHP基础型III)附答案 PHP已经赋予答案:

 

35、写出 SQL语句的格式 : 插入 ,更新 ,删除 (4分)

表名User

Name Tel Content Date

张三 13333663366 大专毕业 2006-10-11

张三 13612312331 本科毕业 2006-10-15

张四 021-55665566 中专毕业 2006-10-15

(a) 有一新记录(小王 13254748547 高中毕业 2007-05-06)请用SQL语句新增至表中

INSERT INTO User('Name','Tel','Content','Date') VALUES('小王','13254748547','高中毕业','2007-05-06')

(b) 请用sql语句把张三的时间更新成为当前系统时间

UPDATE User SET Date=DATE_FORMAT(NOW(),'%Y-%m-%d') WHERE Name='张三'

(c) 请写出删除名为张四的全部记录

DELETE FROM User WHERE Name='张四'

 

36、请写出数据类型(int char varchar datetime text)的意思; 请问varchar和char有什么区别(2分)

char   固定长度的字符,不足的长度用空格补上;varchar好象没有这个类型,

37、MySQ自增类型(通常为表ID字段)必需将其设为(?)字段(1分)

 

38、写出以下程序的输出结果 (1分)

$b=201;

$c=40;

$a=$b>$c?4:5;

echo $a;

?>

答案:4

 

39、检测一个变量是否有设置的函数是否?是否为空的函数是?(2分)

isset();empty();

 

-----------------------------------------------------------------------------

40、取得查询结果集总数的函数是?(1分)

mysql_fetch_array();

 

41、$arr = array('james', 'tom', 'symfony'); 请打印出第一个元素的值 (1分)

echo $arr['0'];

 

42、请将41题的数组的值用','号分隔并合并成字串输出(1分)

$arr_im = implode(",",$arr);

print_r($arr_im);

 

43、$a = 'abcdef'; 请取出$a的值并打印出第一个字母(1分)

$a = 'abcdef';

echo $a;

$a_exp = substr($a,0,1);

echo "
";

echo $a_exp;

 

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

当然可以

 

45、请写出PHP5权限控制修饰符(3分)

PHP5引入了访问修饰,被放在属性和方法声明的前面用以控制它们的可见性。PHP5中支持以下三种不同的访问修饰:

   1、默认的是public(公共),即当你没有为属性和方法指定访问修饰时就默认为public的。而这些public的项目在类内类外都可以访问。

   2、private(私有)访问修饰,意味着被修饰的项只能在类中被访问。如果你没使用__get()和__set(),就最好给每个属性都加上private修饰。也可以给方法加private修饰,例如一些只在类中才用到的函数。private修饰的项不能被继承(更多详细内容会在本章后续部分提到)。

   3、protected(保护)修饰的项能在类及其子类中访问。同样更多详细内容会在本章后续部分提到。现在暂时可以把protected看成界于public和private之间的修饰。

 

46、请写出php5的构造函数和析构函数(2分)

如果你在一个类中声明一个函数,命名为__construct,这个函数将被当成是一个构造函数并在建立一个对象实例时被执行. 清楚地说,__是两个下划线. 就像其它任何函数一样,构造函数可能有参数或者默认值. 你可以定义一个类来建立一个对象并将其属性全放在一个语句(statement)中.

你也可以定义一个名为__destruct的函数,PHP将在对象被销毁前调用这个函数. 它称为析构函数.

------------------------------------------------------------------------------

 

47、以下请用PHPMYADMIN完成--(没有测试)

 

(一)创建新闻发布系统,表名为message有如下字段 (3分)

 

id 文章id

title 文章标题

content 文章内容

category_id 文章分类id

hits 点击量

 

(二)同样上述新闻发布系统:表comment记录用户回复内容,字段如下 (4分)

 

comment_id 回复id

id 文章id,关联message表中的id

comment_content 回复内容

现通过查询数据库需要得到以下格式的文章标题列表,并按照回复数量排序,回复最高的排在最前面

文章id 文章标题 点击量 回复数量

用一个SQL语句完成上述查询,如果文章没有回复则回复数量显示为0

select message.id,message.title, message.hits sum(select count(0) from comment where message.id=comment.id) as comsums from message comment order by comsums;

 

(三)上述内容管理系统,表category保存分类信息,字段如下 (3分)

 

category_id int(4) not null auto_increment;

categroy_name varchar(40) not null;

用户输入文章时,通过选择下拉菜单选定文章分类

写出如何实现这个下拉菜单

//以下使用的adodb

$cnn =& NewADOConnection('mysql');

$cnn -> Connect($db_hostspec, $db_username, $db_password, $db_database);

$cnn -> SetFetchMode(ADODB_FETCH_ASSOC);

if (!$cnn) message("无法连接数据库 $db_database");

$sql = "SELECT * FROM `category` WHERE 1;

$rst =& $cnn -> Execute($sql);

if (!$rst) die($cnn -> ErrorMsg());

$arr_categroy = $rst -> GetArray();

$row): ?>

 


 

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/477524.htmlTechArticle求职与招聘 往往少不了面试与笔试,作为一个php程序员、多多少少都会有类似的经历以下是本人收集并整理的PHP面试题目,希望对同行们有...
声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
PHP与Python:了解差异PHP与Python:了解差异Apr 11, 2025 am 12:15 AM

PHP和Python各有优势,选择应基于项目需求。1.PHP适合web开发,语法简单,执行效率高。2.Python适用于数据科学和机器学习,语法简洁,库丰富。

php:死亡还是简单地适应?php:死亡还是简单地适应?Apr 11, 2025 am 12:13 AM

PHP不是在消亡,而是在不断适应和进化。1)PHP从1994年起经历多次版本迭代,适应新技术趋势。2)目前广泛应用于电子商务、内容管理系统等领域。3)PHP8引入JIT编译器等功能,提升性能和现代化。4)使用OPcache和遵循PSR-12标准可优化性能和代码质量。

PHP的未来:改编和创新PHP的未来:改编和创新Apr 11, 2025 am 12:01 AM

PHP的未来将通过适应新技术趋势和引入创新特性来实现:1)适应云计算、容器化和微服务架构,支持Docker和Kubernetes;2)引入JIT编译器和枚举类型,提升性能和数据处理效率;3)持续优化性能和推广最佳实践。

您什么时候使用特质与PHP中的抽象类或接口?您什么时候使用特质与PHP中的抽象类或接口?Apr 10, 2025 am 09:39 AM

在PHP中,trait适用于需要方法复用但不适合使用继承的情况。1)trait允许在类中复用方法,避免多重继承复杂性。2)使用trait时需注意方法冲突,可通过insteadof和as关键字解决。3)应避免过度使用trait,保持其单一职责,以优化性能和提高代码可维护性。

什么是依赖性注入容器(DIC),为什么在PHP中使用一个?什么是依赖性注入容器(DIC),为什么在PHP中使用一个?Apr 10, 2025 am 09:38 AM

依赖注入容器(DIC)是一种管理和提供对象依赖关系的工具,用于PHP项目中。DIC的主要好处包括:1.解耦,使组件独立,代码易维护和测试;2.灵活性,易替换或修改依赖关系;3.可测试性,方便注入mock对象进行单元测试。

与常规PHP阵列相比,解释SPL SplfixedArray及其性能特征。与常规PHP阵列相比,解释SPL SplfixedArray及其性能特征。Apr 10, 2025 am 09:37 AM

SplFixedArray在PHP中是一种固定大小的数组,适用于需要高性能和低内存使用量的场景。1)它在创建时需指定大小,避免动态调整带来的开销。2)基于C语言数组,直接操作内存,访问速度快。3)适合大规模数据处理和内存敏感环境,但需谨慎使用,因其大小固定。

PHP如何安全地上载文件?PHP如何安全地上载文件?Apr 10, 2025 am 09:37 AM

PHP通过$\_FILES变量处理文件上传,确保安全性的方法包括:1.检查上传错误,2.验证文件类型和大小,3.防止文件覆盖,4.移动文件到永久存储位置。

什么是无效的合并操作员(??)和无效分配运算符(?? =)?什么是无效的合并操作员(??)和无效分配运算符(?? =)?Apr 10, 2025 am 09:33 AM

JavaScript中处理空值可以使用NullCoalescingOperator(??)和NullCoalescingAssignmentOperator(??=)。1.??返回第一个非null或非undefined的操作数。2.??=将变量赋值为右操作数的值,但前提是该变量为null或undefined。这些操作符简化了代码逻辑,提高了可读性和性能。

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解锁Myrise中的所有内容
3 周前By尊渡假赌尊渡假赌尊渡假赌

热工具

SecLists

SecLists

SecLists是最终安全测试人员的伙伴。它是一个包含各种类型列表的集合,这些列表在安全评估过程中经常使用,都在一个地方。SecLists通过方便地提供安全测试人员可能需要的所有列表,帮助提高安全测试的效率和生产力。列表类型包括用户名、密码、URL、模糊测试有效载荷、敏感数据模式、Web shell等等。测试人员只需将此存储库拉到新的测试机上,他就可以访问到所需的每种类型的列表。

Dreamweaver Mac版

Dreamweaver Mac版

视觉化网页开发工具

MinGW - 适用于 Windows 的极简 GNU

MinGW - 适用于 Windows 的极简 GNU

这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。

VSCode Windows 64位 下载

VSCode Windows 64位 下载

微软推出的免费、功能强大的一款IDE编辑器

EditPlus 中文破解版

EditPlus 中文破解版

体积小,语法高亮,不支持代码提示功能