收錄PHP試題

1、用PHP打印出前一天的时间格式是2006-5-10 22:21:21 date_default_timezone_set('PRC'); //设置中国时区 echo $today=date("Y-m-d h:i:s",(time()-86400)); //昨天時間 2、echo(),print(),print_r()的区别 echo是PHP语句, print和print_r是函数,语句没有返回值,函数可以有返回值(即便没有用) print只能打印出简单类型变量的值(如int,string) print_r可以打印出复杂类型变量的值(如数组,对象) 3.在 PHP 和 C 语言 中,有两种类型的递增前递增和后递增,本质上来讲,前递增和后递增均增加了变量的值,并且对于变量的影响是相同的。不同的是递增表达式的值。前递增,写做“++$variable”,求增加后的值(PHP 在读取变量的值之前,增加变量的值,因而称之为“前递增”)。后递增,写做“$variable++”,求变量未递增之前的原始值(PHP 在读取变量的值之后,增加变量的值,因而叫做“后递增”)。 $a = 1; $b = $a++; $b的值爲1 3.使用哪些工具进行版本控制? SNV(Subversion)、VSS(源代码管理器)等 4.如何实现字符串翻转? $luokuan = "ABCDEFG-测试的啊-!!!一二三四五。。"; $n = mb_strlen("$luokuan"); //echo $n; $newluokuan = ""; for ($i=$n;$i>=0;$i--) { //$newluokuan.= substr($luokuan,$i,1); $newluokuan.= mb_substr($luokuan,$i,1,'utf-8'); } echo $newluokuan; 不考虑中英文混合,不是最优算法,不用php库函数翻转字符串: 5. 优化MYSQL数据库的方法 1、选取最适用的字段属性 2、使用连接(JOIN)来代替子查询(Sub-Queries) 3、使用联合(UNION)来代替手动创建的临时表 4、事务 5、锁定表 6、使用外键 7、使用索引 6、能够使HTML和PHP分离开使用的模板 smarty,phplib,SmartTemplate… 7、谈谈事务处理 可以控制并发事务所产生的数据同步提交,更新问题,就是一个锁的概念.comit,rollback 8、apache+mysql+php实现最大负载的方法 问的太笼统,生成静态html页面,squid反向代理,apache,mysql的负载均衡. 9、实现中文字串截取无乱码的方法。 这个首先要考虑字符集的问题,UTF-8下一个汉字占3字节,GBK下一个汉字占2字节.可以自己写个函数来处理,别人也写了很多,当然也可以开启mbstring扩展库,使用里面的mb_substr()等函数来截取 10. var $empty = ''; var $null = NULL; var $bool = FALSE; var $notSet; var $array = array(); $a = "hello"; $b = &$a; unset($b); $b = "world"; what is $a? hello,unset($b)只是释放了$b自己和$a的别名关系,并不会释放$a $a = 1; $x = &$a; $b = $a++; what is $b? 1,先执行$b = $a,$a++再进行,所以$b还是1 $x = empty($array); what is $x? true or false true,$array是空数组 12.您是否用过版本控制软件? 如果有您用的版本控制软件的名字是? CVS:winCVS,是一个CVS的客户端 VSS,微软的产品,比较适合中小型项目,只支持单人checkout 13.您是否用过模板引擎? 如果有您用的模板引擎的名字是? SMARTY,php官方推荐的模板引擎,它是编译型模板,与phplib不太相同,功能强大,30多种标签,支持cache 14.对于大流量的网站,您采用什么样的方法来解决访问量问题? squid[反向代理],最好的选择!当然,money不是问题的话,增加带宽也是很好的选择! 15.用PHP写出显示客户端IP与服务器IP的代码: echo $_SERVER['REMOTE_ADDR'] //客户端ip echo $_SERVER['SERVER_ADDR'] //服务器端ip 面试题3 一、PHP/MySQL编程 1) 某内容管理系统中,表message有如下字段 id 文章id title 文章标题 content 文章内容 category_id 文章分类id hits 点击量 创建上表,写出MySQL语句 create table message ( id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, title varchar(100), content varchar(225), category_id int, hits int ) mssql語句: create table message ( id INT identity(1,1) not null primary key, title varchar(100), [content] varchar(225), [category_id] int, hits int ) 2)同样上述内容管理系统:表comment记录用户回复内容,字段如下 comment_id 回复id id 文章id,关联message表中的id comment_content 回复内容 现通过查询数据库需要得到以下格式的文章标题列表,并按照回复数量排序,回复最高的排在最前面 文章id 文章标题 点击量 回复数量 用一个SQL语句完成上述查询,如果文章没有回复则回复数量显示为0 select a.id, a.title, a.hits, if(ifnull(b.id,false),count(*),0) as replay from message a left join comment b on a.id=b.id group by a.id order by replay desc 3)上述内容管理系统,表category保存分类信息,字段如下 (3分) category_id int(4) not null auto_increment; categroy_name varchar(40) not null; 用户输入文章时,通过选择下拉菜单选定文章分类 写出如何实现这个下拉菜单 function categoryList() { $result=mysql_query("select category_id,categroy_name from category") or die("Invalid query: " . mysql_error()); print(" ".$rowArray['categroy_name'].""); } 三、PHP程序 1) 写出以下程序的输出结果 $c?4:5; echo $a; ?> $a=4 2) 写出以下程序的输出结果 $str="cd"; 四、 1.请说明 PHP 中传值与传引用的区别。什么时候传值什么时候传引用? 传值只是把某一个变量的值传给了另一个变量,而引用则说明两者指向了同一个地方。 2 在PHP中error_reporting这个函数有什么作用? 设定php脚本的错误报告级别。 3 请用正则表达式(Regular Expression)写一个函数验证电子邮件的格式是否正确。 /* 检查邮件地址是否为邮件地址,返回逻辑值 */ function CheckMailAdr($str){ return(eregi("^[_/.0-9a-z-]+@([0-9a-z][0-9a-z-]+/.)+[a-z]{2,3}$",$str)); } 4 简述如何得到当前执行脚本路径,包括所得到参数。 说明:例如有一个脚本 www.domain.com,传给他的参数有参数1,参数2,参数3…。传递参数的方法有可能是GET有可能是POST,那么现在请写出类似:http://www.domain.com/script.php?参数1=值1&参数2=值2..... 的结果 关于前执行脚本路径感觉有点歧义:若是得到该脚本在服务器上的绝对路径用 $_SERVER[‘APPL_PHYSICAL_PATH’].若是该脚本的URL则可以用获取 获取所有参数:可以用以下方法: //获取post的数据 while (list($var, $value) = each($HTTP_POST_VARS)) { echo "$var = $value n"; } //获取get方式的数据 while (list($var, $value) = each($HTTP_GET_VARS)) { echo "$var = $value n"; } 5 有一个一维数组,里面存储整形数据,请写一个函数,将他们按从大到小的顺序排列。要求执行效率高。并说明如何改善执行效率。 (该函数必须自己实现,不能使用php函数) 可以用冒泡排序 6 请举例说明在你的开发过程中用什么方法来加快页面的加载速度 A.生成静态HTML, B.生成XML C.用ZEND加速 面试题8 1-如何通过javascript判断一个窗口是否已经被屏蔽。 dffffff"); 16..以Apache模块的方式安装PHP,在文件http.conf中首先要用语句(10)动态装载PHP模块,然后再用语句(11)使得Apache把所有扩展名为php的文件都作为PHP脚本处理。 (10)LoadModule php5_module "D:/xampp/apache/bin/php5apache2.dll" (11) AddType application/x-httpd-php-source .phps AddType application/x-httpd-php .php .php5 .php4 .php3 .phtml 17.语句 include 和 require 都能把另外一个文件包含到当前文件中,它们的区别是(12);为了避免多次包含同一文件,可以用语句(13)来代替它们。 (12) 发生异常时include产生警告require产生致命错误 (13) require_once()/include_once() 18.类的属性可以序列化后保存到 session 中,从而以后可以恢复整个类,这要用到的函数是(14)。 serialize() /unserialize() 19.一个函数的参数不能是对变量的引用,除非在php.ini中把(15)设为on. allow_call_time_pass_reference 20.SQL 中LEFT JOIN的含义是(16)。 (16) 自然左外连接 21.如果 tbl_user记录了学生的姓名(name)和学号(ID), tbl_score记录了学生(有的学生考试以后被开除了,没有其记录)的学号(ID)和考试成绩(score)以及考试科目(subject), 要想打印出各个学生姓名及对应的的各科总成绩,则可以用SQL语句(17)。 (17) 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 22.在PHP中,heredoc是一种特殊的字符串,它的结束标志必须(18)。 结束标识符所在的行不能包含任何其它字符除";" 23.一个函数,能够遍历一个文件夹下的所有文件和子文件夹。 /** * 遍历目录,结果存入数组。支持php4及以上。php5以后可用scandir()函数代替while循环。 * @param string $dir * @return array */ function my_scandir($dir) { $files = array(); if ( $handle = opendir($dir) ) { while ( ($file = readdir($handle)) !== false ) { if ( $file != ".." && $file != "." ) { if ( is_dir($dir . "/" . $file) ) { $files[$file] = my_scandir($dir . "/" . $file); }else { $files[] = $file; } } } closedir($handle); return $files; } }

你可能感兴趣的:(PHP)