首页 >后端开发 >php教程 >php面试题目

php面试题目

WBOY
WBOY原创
2016-06-23 14:31:461055浏览

1、用PHP打印出前一天的时间格式是2006-5-10 22:21:21(2分)" u% j& q! s$ }0 V8 ~4 ?# ?
date("Y-m-d H:i:s", strtotime("-1 days"));

 

2、echo(),print(),print_r()的区别(3分)
echo是PHP语句, print和print_r是函数,语句没有返回值,函数可以有返回值(即便没有用)  
print()    只能打印出简单类型变量的值(如int,string)  
print_r() 可以打印出复杂类型变量的值(如数组,对象) 
 

2 W; Q: j* q0 J# t3 K4 \
3、能够使HTML和PHP分离开使用的模板(1分)
Smarty, FastTemplate


9 e% q6 S% K9 {3 @2 x
4、使用哪些工具进行版本控制?(1分)
svn, csv


5、如何实现字符串翻转?(3分)
function newStr($str)
{
$rs = "";
for($i=strlen($str); $i>=0; $i++)
$rs .= $str[$i];
return $rs;
}


0 g5 ]0 z# \; W+ x7 a( A
* d3 Z6 f) U3 L  U
6、优化MYSQL数据库的方法。(4分,多写多得)
选取最适用的字段属性
使用连接(JOIN)来代替子查询(Sub-Queries)
使用联合(UNION)来代替手动创建的临时表
事务
锁定表
使用外键
使用索引
优化的查询语句

7、PHP的意思(送1分)
PHP,一个嵌套的缩写名称,是英文“超级文本预处理语言”(PHP:Hypertext Preprocessor)的缩写


  f+ @5 n' E: G- Y; B" b


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


9、实现中文字串截取无乱码的方法。(3分)$ \  `% B1 r6 c6 H4 b" I5 O/ V
function GBsubstr($string, $start, $length) {
if(strlen($string)>$length){
$str=null;
$len=$start+$length;
for($i=$start;$iif(ord(substr($string,$i,1))>0xa0){
$str.=substr($string,$i,2);
$i++;
}else{
$str.=substr($string,$i,1);
}
}
return $str.'...';
}else{
return $string;
}
}


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


; X8 K5 M& Z* [/ V/ v
11、您是否用过模板引擎? 如果有您用的模板引擎的名字是?(1分)
smarty


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


4 q; O# e  ]8 w* b: {
13、对于大流量的网站,您采用什么样的方法来解决访问量问题?(4分)
第一,确认服务器硬件是否足够支持当前的流量。
第二,优化数据库访问。
第三,禁止外部的盗链。
第四,控制大文件的下载。
第五,使用不同主机分流主要流量
第六,使用流量分析统计软件。

  o1 j. h' `& M
14、用PHP写出显示客户端IP与服务器IP的代码1分)
服务器IP:echo $_SERVER['HTTP_HOST']
客户端IP:echo $_SERVER['REMOTE_ADDR']

) p# @* r% P# G8 ~* Y+ {" |) [2 R
15、语句include和require的区别是什么?为避免多次包含同一文件,可用(?)语句代替它们? (2分)
发生异常时include产生警告require产生致命错误
只包含一次 include_once,require_once

16、如何修改SESSION的生存时间(1分).
session_set_cookie_params(生存秒数);
setcookie();

17、有一个网页地址, 比如PHP研究室主页: http://www.phpv.net/index.html,如何得到它的内容?($1分)
file_get_contents($url)

18、在HTTP 1.0中,状态码401的含义是(?);如果返回“找不到文件”的提示,则可用 header 函数,其语句为(?);(2分)
401 未授权访问Unauthorized;
header('HTTP/1.1 404 Not Found');

: X5 n; A: U+ L7 [  g; c
19、在PHP中,heredoc是一种特殊的字符串,它的结束标志必须?(1分)
必须顶格。

20、谈谈asp,php,jsp的优缺点(1分)


- x6 v8 a! s* }. ?
21、谈谈对mvc的认识(1分)
MVC(Model/View/Controller)模式包括三类对象。Model是应用对象,View是它在屏幕上的表示,
Controller定义用户界面对用户输入的响应方式。
模型-视图-控制器(MVC)是80年代Smalltalk-80出现的一种软件设计模式,现在已经被广泛的使用。
1)模型(Model)
模型是应用程序的主体部分。模型表示业务数据,或者业务逻辑.
2)视图(View)
视图是应用程序中用户界面相关的部分,是用户看到并与之交互的界面。
3)控制器(controller)
控制器工作就是根据用户的输入,控制用户界面数据显示和更新model对象状态。

' `7 @6 U( G0 ?& j$ J6 n
22、写出发贴数最多的十个人名字的SQL,利用下表:members(id,username,posts,pass,email)(2分)
SELECT username FROM members ORDER BY posts DESC LIMIT 10


23. 请说明php中传值与传引用的区别。什么时候传值什么时候传引用?(2分)
传值是传递堆里一个值的拷贝,传引用是传递栈里一个指向某值的符号的拷贝。改变原值传引用,不改变就传值。

24. 在PHP中error_reporting这个函数有什么作用? (1分)
设定错误讯息回报的等级

25. 请写一个函数验证电子邮件的格式是否正确 (2分)
function validateEmail($email)
{
return ereg('^[-_\.a-zA-Z0-9]+@[-a-zA-Z0-9]+\.[-\.a-zA-Z0-9]+$', $email);
}


; ]* m' f+ _0 I. `& r3 P6 r4 G
26. 简述如何得到当前执行脚本路径,包括所得到参数。(2分)
echo $_SERVEpastingR['SCRIPT_FILENAME'] . "?" . $_SERVER['QUERY_STRING'];


27.如何修改SESSION的生存时间. (1分)
setcookie();


28、JS表单弹出对话框函数是?获得输入焦点函数是? (2分)
alert();prompt();confirm();
focus();


# H& g% k  M0 G$ s/ E/ ~5 C" l/ u+ M
29、JS的转向函数是?怎么引入一个外部JS文件?(2分)
window.location = "";

 

30、foo()和@foo()之间有什么区别?(1分)! s) x1 q# G* F1 t: F
@可以屏蔽错误!

 

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

6 N: I  B. M. w3 X/ s4 t$ s
32、如何实例化一个名为”myclass”的对象?(1分)
$newClass = new myclass();


33、你如何访问和设置一个类的属性? (2分)
$test = new myclass();
$test->oneParam = "test";
echo $test->twoParam;


34、mysql_fetch_row() 和mysql_fetch_array之间有什么区别? (1分)5 X# w+ V, g2 b
mysql_fetch_row -- 从结果集中取得一行作为枚举数组
mysql_fetch_array -- 从结果集中取得一行作为关联数组,或数字数组,或二者兼有

35、GD库是做什么用的? (1分)
GD库提供了一系列用来处理图片的API,使用GD库可以处理图片,或者生成图片。
在网站上GD库通常用来生成缩略图或者用来对图片加水印或者对网站数据生成报表。

36、指出一些在PHP输入一段HTML代码的办法。(1分), U$ o# n3 B) ]; S" P/ G
print("
");
echo "
";

37、下面哪个函数可以打开一个文件,以对文件进行读和写操作?(1分)
选c
(a) fget() (b) file_open() (c) fopen() (d) open_file()

38、下面哪个选项没有将 john 添加到users 数组中? (1分)
选b, c ,d 其中b是不存在的函数
(a) $users[] = ‘john’;
(b) array_add($users,’john’);$ y0 b# B9 _  l: L
(c) array_push($users,‘john’);
(d) $users ||= ‘john’;


* z4 g4 s: Q. q6 |/ a& K& l
39、下面的程序会输入是否?(1分); |1 H( p! ~# ~$ |7 K0 x
$num = 10;8 L: @% v/ T4 U6 ?1 [
function multiply(){9 ]$ g! V  i+ O+ _: U5 ^" E- h- C
$num = $num * 10;
}
multiply();- Q+ y/ ^$ O2 X6 |4 h
echo $num;* y6 l8 x- x% K. \% H% s5 p
?>
否,局部变量# ~& j6 Q3 k$ {( `" ]


40、使用php写一段简单查询,查出所有姓名为“张三”的内容并打印出来 (2分)5 t3 H0 r- J( P
表名 UserName Tel Content Date' t: ?2 `$ B; C4 `
张三 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 "
";
}

41、如何使用下面的类,并解释下面什么意思?(3)2 L+ r1 Z  N) s, S  ~. X
class test{
function Get_test($num){$ x; b9 r7 v3 X& c# q$ s& c' a0 i
$num=md5(md5($num).”En”);
return $num;
}
}
双重md5加密
/ G: ~8 [# u3 ]# G) W. b


42、写出 SQL语句的格式 : 插入 ,更新 ,删除 (4分)) L& C5 m- _0 Q( s0 Q- K9 Q
表名 UserName 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')
  E6 v" Q; z- m3 B+ A( `2 }
(b) 请用sql语句把张三的时间更新成为当前系统时间
UPDATE User SET Date=DATE_FORMAT(NOW(),'%Y-%m-%d') WHERE Name='张三'
(c) 请写出删除名为张四的全部记录
DELETE FROM User WHERE Name='张四'


43、请写出数据类型(int char varchar datetime text)的意思; 请问varchar和char有什么区别(2分)
int 数值类型 char 固定长度字符串 varchar 可变长字符串 datetime 日期时间型 text 字符字符串
char列的长度固定为创建表时声明的长度.varchar列中的值为可变长字符串.

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

45、写出以下程序的输出结果 (1分)" `( Q6 @% r/ z
$b=201;/ Y1 z8 s( e! z& D8 U* \. Y) x1 J
$c=40;
$a=$b>$c?4:5;  ^4 n4 i: X- b' S
echo $a;
?>
结果为:4


46、检测一个变量是否有设置的函数是?是否为空的函数是?(2分)3 X& i& m2 R" c# H$ S& g1 W
isset() empty()

* Y0 l: p- e& t4 w) I" U
47、取得查询结果集总数的函数是?(1分)
count()


48、$arr = array(’james’, ‘tom’, ’symfony’); 请打印出第一个元素的值 (1分)( k7 c4 S: ]) ]# i
echo $arr[0];


49、请将48题的数组的值用’,'号分隔并合并成字串输出(1分)
$arr1 = implode(",",$arr);

* C3 Q3 n) |5 I. f" c) |+ p8 S; P
50、$a = ‘abcdef’; 请取出$a的值并打印出第一个字母(1分)
echo $a[0];
echo substr($a, 0, 1)


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


8 ]7 c. }- f5 l" o* W  ?0 I0 ?
52、请写出PHP5权限控制修饰符(3分)
private protected public

/ X2 ?. E) F/ d
53、请写出php5的构造函数和析构函数(2分)
__construct __destruct

" {/ e+ C1 p# o5 D- ^
54、以下请用PHPMYADMIN完成
(一)创建新闻发布系统,表名为message有如下字段 (3分)/ z) Q( g0 G7 K. w$ r- c& _8 y+ y5 q3 F
id 文章id: }5 |: G0 L! s4 i9 F& T3 h$ V2 _
title 文章标题6 M+ w1 P4 F; Y% _0 ^
content 文章内容
category_id 文章分类id
hits 点击量

7 k$ z. }9 W$ x; w1 ~9 |
(二)同样上述新闻发布系统:表comment记录用户回复内容,字段如下 (4分)9 U# K- X  O8 p1 j6 m9 n
comment_id 回复id- W- M" ]: [& a' f& D- Y- b
id 文章id,关联message表中的id
comment_content 回复内容7 n/ J, l% k6 W( A. {+ f- r
现通过查询数据库需要得到以下格式的文章标题列表,并按照回复数量排序,回复最高的排在最前面: [, [- ^9 X% j6 f* ?& d, ]
文章id 文章标题 点击量 回复数量
用一个SQL语句完成上述查询,如果文章没有回复则回复数量显示为0
SELECT message.id id, message.title title IF(message.hit is NULL, 0, message.hit)hits,
IF(comment.id, 0, count(*))number
FROM message
LEFT JOIN
comment ON comment.id = message.id
GROUP BY message.id

(三)上述内容管理系统,表category保存分类信息,字段如下 (3分)
category_id int(4) not null auto_increment;" _3 r- r' r) Y& \$ W
categroy_name varchar(40) not null;
用户输入文章时,通过选择下拉菜单选定文章分类, E" K* Y9 _% M7 Z1 M; h
写出如何实现这个下拉菜单


填空题
1.在PHP中,当前脚本的名称(不包括路径和查询字符串)记录在预定义变量 $_SERVER["PHP_SELF"] 中;而链接到当前页面的URL记录在预定义变量 $_SERVER["HTTP_REFERER"] 中。
2.执行程序段将输出 0 。' B8 o& W% J  D: H% c5 q
3.在HTTP 1.0中,状态码 401 的含义是 未授权 ;如果返回“找不到文件”的提示,则可用 header 函数,其语句为 header(HTTP/1.0 404 Not Found)。
4.数组函数 arsort 的作用是 对数组进行逆向排序并保持索引关系 ;语句 error_reporting(2047)的作用是 All errors and warnings 。6 g+ o' O! F% e
5.PEAR中的数据库连接字符串格式是 "mysql://root:123@192.168.0.1/testdb (phptype://username:password@protocol+hostspec/database)" 。
6.写出一个正则表达式,过虑网页上的所有JS/VBS脚本(即把scrīpt标记及其内容都去掉):"/<script>].*?>.*?<\/script>/si"。<br />7.以Apache模块的方式安装PHP,在文件http.conf中首先要用语句 LoadModule php5_module "D:\xampp\apache\bin\php5apache2.dll" 动态装载PHP模块,然后再用语句 AddType application/x-httpd-source .phps AddType application/x-httpd .php .php3 .php4 .php5 .phtml 使得Apache把所有扩展名为php的文件都作为PHP脚本处理。<br />8.语句 include 和 require 都能把另外一个文件包含到当前文件中,它们的区别是 include产生警告,require产生致命错误 ;为了避免多次包含同一文件,可以用语句 include_once()和request_once() 来代替它们。<br />9.类的属性可以序列化后保存到 session 中,从而以后可以恢复整个类,这要用到的函数是 serialize()/unserialize()。5 M ]- V# q. j \8 h<br />10.一个函数的参数不能是对变量的引用,除非在php.ini中把 allow_call_time_pass_reference 设为on.; ^- Q U2 b6 ?; f3 \; g<br />11.SQL中LEFT JOIN的含义是 自然左外连接。如果 tbl_user记录了学生的姓名(name)和学号(ID),tbl_score记录了学生(有的学生考试以后被开除了,没有其记录)的学号(ID)和考试成绩(score)以及考试科目(subject),要想打印出各个学生姓名及对应的的各科总成绩,则可以用SQL语句 select name , count(score) as sum_score from tbl_user left join tbl_score on tbl_user.ID=tbl_score.ID group by tbl_user.ID。<br />12.在PHP中,heredoc是一种特殊的字符串,它的结束标志必须 结束标识符所在的行不能包含任何其它字符除";"。</script>


. D9 T/ `! f" J4 |; V. k+ f
编程题2 }9 Z0 g: U! Z6 T2 O
$ X: f& g  }1 y+ k6 R) k7 g7 W, T
1. 写一个函数,尽可能高效的,从一个标准 url 里取出文件的扩展名$ n+ m7 ?& K. ^/ ^8 A
例如: http://www.sina.com.cn/abc/de/fg.php?id=1 需要取出 php 或 .php7 ~" T3 M5 }, W
2. 在 HTML 语言中,页面头部的 meta 标记可以用来输出文件的编码格式,以下是一个标准的 meta 语句
请使用 PHP 语言写一个函数,把一个标准 HTML 页面中的类似 meta 标记中的 charset 部分值改为 big57 ~. H* O; P% q+ ~: G  }
请注意:
1. 需要处理完整的 html 页面,即不光此 meta 语句4 T# L/ v7 u7 L, k
2. 忽略大小写
3. ‘ 和 ” 在此处是可以互换的
4. ‘Content-Type’ 两侧的引号是可以忽略的,但 ‘text/html; charset=gbk’ 两侧的不行" O5 L6 v* P! f  r! W, u
5. 注意处理多余空格
3. 写一个函数,算出两个文件的相对路径
如 $a = ‘/a/b/c/d/e.php’;
$b = ‘/a/b/12/34/c.php’;8 Q- j- b. E/ m( m1 D
计算出 $b 相对于 $a 的相对路径应该是 http://www.cnblogs.com/c/d将()添上
3.写一个函数,能够遍历一个文件夹下的所有文件和子文件夹。* t4 ^. b/ K' Q$ G5 l4 P! {$ G
4.简述论坛中无限分类的实现原理。

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn