首頁 php教程 php手册 PHP经典面试题(基础型I)附答案

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

Jun 13, 2016 am 10:56 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): ?>

 


 

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1664
14
CakePHP 教程
1423
52
Laravel 教程
1321
25
PHP教程
1269
29
C# 教程
1249
24
PHP和Python:比較兩種流行的編程語言 PHP和Python:比較兩種流行的編程語言 Apr 14, 2025 am 12:13 AM

PHP和Python各有優勢,選擇依據項目需求。 1.PHP適合web開發,尤其快速開發和維護網站。 2.Python適用於數據科學、機器學習和人工智能,語法簡潔,適合初學者。

PHP行動:現實世界中的示例和應用程序 PHP行動:現實世界中的示例和應用程序 Apr 14, 2025 am 12:19 AM

PHP在電子商務、內容管理系統和API開發中廣泛應用。 1)電子商務:用於購物車功能和支付處理。 2)內容管理系統:用於動態內容生成和用戶管理。 3)API開發:用於RESTfulAPI開發和API安全性。通過性能優化和最佳實踐,PHP應用的效率和可維護性得以提升。

PHP:網絡開發的關鍵語言 PHP:網絡開發的關鍵語言 Apr 13, 2025 am 12:08 AM

PHP是一種廣泛應用於服務器端的腳本語言,特別適合web開發。 1.PHP可以嵌入HTML,處理HTTP請求和響應,支持多種數據庫。 2.PHP用於生成動態網頁內容,處理表單數據,訪問數據庫等,具有強大的社區支持和開源資源。 3.PHP是解釋型語言,執行過程包括詞法分析、語法分析、編譯和執行。 4.PHP可以與MySQL結合用於用戶註冊系統等高級應用。 5.調試PHP時,可使用error_reporting()和var_dump()等函數。 6.優化PHP代碼可通過緩存機制、優化數據庫查詢和使用內置函數。 7

PHP的持久相關性:它還活著嗎? PHP的持久相關性:它還活著嗎? Apr 14, 2025 am 12:12 AM

PHP仍然具有活力,其在現代編程領域中依然佔據重要地位。 1)PHP的簡單易學和強大社區支持使其在Web開發中廣泛應用;2)其靈活性和穩定性使其在處理Web表單、數據庫操作和文件處理等方面表現出色;3)PHP不斷進化和優化,適用於初學者和經驗豐富的開發者。

PHP與Python:了解差異 PHP與Python:了解差異 Apr 11, 2025 am 12:15 AM

PHP和Python各有優勢,選擇應基於項目需求。 1.PHP適合web開發,語法簡單,執行效率高。 2.Python適用於數據科學和機器學習,語法簡潔,庫豐富。

PHP和Python:代碼示例和比較 PHP和Python:代碼示例和比較 Apr 15, 2025 am 12:07 AM

PHP和Python各有優劣,選擇取決於項目需求和個人偏好。 1.PHP適合快速開發和維護大型Web應用。 2.Python在數據科學和機器學習領域佔據主導地位。

PHP與其他語言:比較 PHP與其他語言:比較 Apr 13, 2025 am 12:19 AM

PHP適合web開發,特別是在快速開發和處理動態內容方面表現出色,但不擅長數據科學和企業級應用。與Python相比,PHP在web開發中更具優勢,但在數據科學領域不如Python;與Java相比,PHP在企業級應用中表現較差,但在web開發中更靈活;與JavaScript相比,PHP在後端開發中更簡潔,但在前端開發中不如JavaScript。

PHP和Python:解釋了不同的範例 PHP和Python:解釋了不同的範例 Apr 18, 2025 am 12:26 AM

PHP主要是過程式編程,但也支持面向對象編程(OOP);Python支持多種範式,包括OOP、函數式和過程式編程。 PHP適合web開發,Python適用於多種應用,如數據分析和機器學習。

See all articles