php 面试题

WBOY
WBOYOriginal
2016-06-23 14:34:421007Durchsuche

1、用PHP打印出前一天的时间格式是2006-5-10 22:21:21  
 解:echo date('Y-n-d H:i:s', strtotime('-1 day'));
原因:

format 字符 说明 返回值例子
a 小写的上午和下午值 am 或 pm
A 大写的上午和下午值 AM 或 PM
d 月份中的第几天,有前导零的 2 位数字 01 到 31
D 星期中的第几天,文本表示,3 个字母 Mon 到 Sun
F 月份,完整的文本格式,例如 January 或者 March January 到 December
g 小时,12 小时格式,没有前导零 1 到 12
G 小时,24 小时格式,没有前导零 0 到 23
h 小时,12 小时格式,有前导零 01 到 12
H 小时,24 小时格式,有前导零 00 到 23
i 有前导零的分钟数 00 到 59>
I 是否为夏令时 如果是夏令时为 1,否则为 0
j 月份中的第几天,没有前导零 1 到 31
l(“L”的小写字母) 星期几,完整的文本格式 Sunday 到 Saturday
L 是否为闰年 如果是闰年为 1,否则为 0
m 数字表示的月份,有前导零 01 到 12
M 三个字母缩写表示的月份 Jan 到 Dec
n 数字表示的月份,没有前导零 1 到 12
O 与格林威治时间相差的小时数 例如:+0200
r RFC 822 格式的日期 例如:Thu, 21 Dec 2000 16:01:07 +0200
s 秒数,有前导零 00 到 59>
S 每月天数后面的英文后缀,2 个字符 st,nd,rd 或者 th。可以和 j 一起用。
t 给定月份所应有的天数 28 到 31
T 本机所在的时区 例如:EST,MDT(【译者注】在 Windows 下为完整文本格式,例如“Eastern Standard Time”,中文版会显示“中国标准时间”)。
w 星期中的第几天,数字表示 0(表示星期天)到 6(表示星期六)
W ISO-8601 格式年份中的第几周,每周从星期一开始(PHP 4.1.0 新加的) 例如:42(当年的第 42 周)
Y 4 位数字完整表示的年份 例如:1999 或 2003
y 2 位数字表示的年份 例如:99 或 03
z 年份中的第几天 0 到 366

2、能够使HTML和PHP分离开使用的模板
解:其实PHP本身就是一种模版引擎,我用过的是smarty,常见的还有PHPLib,FastTemplate,Savant这里有个模板引擎列表                         
:http://www.sitepoint.com/forums/showthread.php?t=123769

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

4、如何实现字符串翻转?
解:  用strrev函数,不准用PHP内置的就自己写:
strrev($str)
{
$len=strlen($str);
$newstr = '''';
for($i=$len;$i>=0;$i--)
{
$newstr .= $str{$i};
}
return $newstr;
}

5、优化MYSQL数据库的方法?
我的答案:
 (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可以提高一个数量级的查询速度.

6、谈谈事务处理?
解:如同是个编程语言都会有答应Hello World的例子一样,是本数据库的教材都会讲A给B的账户转账50美元的例子,回答这个就好了.不过据我所知,用MySQL的企业,很少用MySQL来实现事务处理.何况现在Oracle收购了InnoDB的公司.

7、apache+mysql+php实现最大负载的方法
解:

8、实现中文字串截取无乱码的方法。
解:mb_substr()

9、echo(),print(),print_r()的区别
解:echo是语言结构,无返回值;print功能和echo基本相同,不同的是print是函数,有返回值;print_r是递归打印,用于输出数组对象

10、在PHP中,当前脚本的名称(不包括路径和查询字符串)记录在预定义变量什么中;而链接到当前页面的URL记录在预定义变量什么中。
解:echo $_SERVER['PHP_SELF']; echo $_SERVER["HTTP_REFERER"];
11、执行程序段将输出??
解:0
12、在HTTP 1.0中,状态码 401 的含义是什么;如果返回“找不到文件”的提示,则可用 header 函数,其语句为什么。
解:未授权     header("HTTP/1.0 404 Not Found");
13、数组函数 arsort 的作用是(对数组进行逆向排序并保持索引关系);语句 error_reporting(2047)的作用是(All errors and warnings)。
14、PEAR中的数据库连接字符串格式是()?
15、写出一个正则表达式,过虑网页上的所有JS/VBS脚本(即把script标记及其内容都去掉):(    /<script>].*?>.*?<\/script>/si ) <br />16、以Apache模块的方式安装PHP,在文件http.conf中首先要用语句(1)动态装载PHP模块,然后再用语句(2)使得Apache把所有扩展名为php的文件都作为PHP脚本处理。 <br />解:(1) LoadModule php5_module "D:/xampp/apache/bin/php5apache2.dll" (2) AddType application/x-httpd-php-source .phps <br /> AddType application/x-httpd-php .php .php5 .php4 .php3 .phtml <br />17、语句 include 和 require 都能把另外一个文件包含到当前文件中,它们的区别是什么;为了避免多次包含同一文件,可以用语句()来代替它们。 <br />解:发生异常时include产生警告require产生致命错误 (13) require_once()/include_once() <br />18、类的属性可以序列化后保存到 session 中,从而以后可以恢复整个类,这要用到的函数是( serialize() /unserialize() ) <br />19、一个函数的参数不能是对变量的引用,除非在php.ini中把(allow_call_time_pass_reference)设为on. <br />20、SQL 中LEFT JOIN的含义是(自然左外连接)。 <br />如果 tbl_user记录了学生的姓名(name)和学号(ID), <br />tbl_score记录了学生(有的学生考试以后被开除了,没有其记录)的学号(ID)和考试成绩(score)以及考试科目(subject), <br />要想打印出各个学生姓名及对应的的各科总成绩,则可以用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 />21、在PHP中,heredoc是一种特殊的字符串,它的结束标志必须(结束标识符所在的行不能包含任何其它字符除";")。 <br />22、写一个函数,能够遍历一个文件夹下的所有文件和子文件夹。 <br />解:/** <br /> * 遍历目录,结果存入数组。支持php4及以上。php5以后可用scandir()函数代替while循环。 <br /> * @param string $dir <br /> * @return array <br /> */ <br />function my_scandir($dir) <br />{ <br /> $files = array(); <br /> if ( $handle = opendir($dir) ) { <br /> while ( ($file = readdir($handle)) !== false ) { <br /> if ( $file != ".." && $file != "." ) { <br /> if ( is_dir($dir . "/" . $file) ) { <br /> $files[$file] = rec_scandir($dir . "/" . $file); <br /> }else { <br /> $files[] = $file; <br /> } <br /> } <br /> } <br /> closedir($handle); <br /> return $files; <br /> } <br />} <br />23、简述论坛中无限分类的实现原理。 <br />24、设计一个网页,使得打开它时弹出一个全屏的窗口,该窗口中有一个文本框和一个按钮。用户在文本框中输入信息后点击按钮就可以把窗口关闭,而输入的信息却在主网页中显示。 </script>
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:PHP静态类Nächster Artikel:php中的cookie