当前位置:  编程技术>php
本页文章导读:
    ▪一份PHP程序员面试题(基础型)      1.在PHP中,当前脚本的名称(不包括路径和查询字符串)记录在预定义变量(1)中;而链接到当前页面的URL记录在预定义变量(2)中。 2.执行程序段<?php echo 8%(-2) ?>将输出(3)。 3.在HTTP .........
    ▪php程序员面试题及答案      一、问题部分 1. 对象的蓝图是什么? 答案:____________ 2. 以下代码执行后,数组$a->my_value 中储存的值是什么?(三选)   class my_class { var $my_value = array(); function my_class ($value) { $this-.........
    ▪腾讯php程序员部分面试题及答案分享      3,请说明在php.ini中safe_mode开启之后对于PHP系统函数的影响 safe_mode是提供一个基本安全的共享环境。在一个多用户共享的phpweb服务器上,当这台服务器开启了safe_mode模式,有以下函数将会受到.........

[1]一份PHP程序员面试题(基础型)
    来源: 互联网  发布时间: 2013-12-24

1.在PHP中,当前脚本的名称(不包括路径和查询字符串)记录在预定义变量(1)中;而链接到当前页面的URL记录在预定义变量(2)中。

2.执行程序段<?php echo 8%(-2) ?>将输出(3)。

3.在HTTP 1.0中,状态码 401 的含义是(4);如果返回“找不到文件”的提示,则可用 header 函数,其语句为(5)。

4.数组函数 arsort 的作用是(6);语句 error_reporting(2047)的作用是(7)。

5.PEAR中的数据库连接字符串格式是(8)。

6.写出一个正则表达式,过虑网页上的所有JS/VBS脚本(即把script标记及其内容都去掉):(9)。

7.以Apache模块的方式安装PHP,在文件http.conf中首先要用语句(10)动态装载PHP模块,然后再用语句(11)使得Apache把所有扩展名为php的文件都作为PHP脚本处理。

8.语句 include 和 require 都能把另外一个文件包含到当前文件中,它们的区别是(12);为了避免多次包含同一文件,可以用语句(13)来代替它们。

9.类的属性可以序列化后保存到 session 中,从而以后可以恢复整个类,这要用到的函数是(14)。

10.一个函数的参数不能是对变量的引用,除非在php.ini中把(15)设为on.

11.SQL 中LEFT JOIN的含义是(16)。如果 tbl_user记录了学生的姓名(name)和学号(ID),tbl_score记录了学生(有的学生考试以后被开除了,没有其记录)的学号(ID)和考试成绩(score)以及考试科目(subject),要想打印出各个学生姓名及对应的的各科总成绩,则可以用SQL语句(17)。
12.在PHP中,heredoc是一种特殊的字符串,它的结束标志必须(18)。

13.写一个函数,能够遍历一个文件夹下的所有文件和子文件夹。

14.简述论坛中无限分类的实现原理。

15.设计一个网页,使得打开它时弹出一个全屏的窗口,该窗口中有一个文本框和一个按钮。用户在文本框中输入信息后点击按钮就可以把窗口关闭,而输入的信息却在主网页中显示。
//答案(填空): 1. echo $_SERVER['PHP_SELF']; echo $_SERVER["HTTP_REFERER"]; 2. 0 3. (4)未授权 (5) header("HTTP/1.0 404 Not Found"); 4. (6)对数组进行逆向排序并保持索引关系 (7)All errors and warnings 5. 没弄明白 6. /<script[^>].*?>.*?<\/script>/si 7.(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 8.(12) 发生异常时include产生警告require产生致命错误 (13) require_once()/include_once() 9. serialize() /unserialize() 10. allow_call_time_pass_reference

11. (16) 自然左外连接 (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 12. 结束标识符所在的行不能包含任何其它字符除";"13./*** 遍历目录,结果存入数组。支持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] = rec_scandir($dir . "/" . $file); }else { $files[] = $file; } } } closedir($handle); return $files; }}

希望以上提供的php 面试题,对大家有所帮助。祝大家找工作顺利哦。


    
[2]php程序员面试题及答案
    来源: 互联网  发布时间: 2013-12-24

一、问题部分

1. 对象的蓝图是什么?
答案:____________

2. 以下代码执行后,数组$a->my_value 中储存的值是什么?(三选)
 

class my_class
{
var $my_value = array();
function my_class ($value)
{
$this->my_value[] = $value;
}
function set_value ($value)
{
$this->$my_value = $value;
}
}
$a = new my_class (‘a’);
$a->my_value[] = ‘b’;
$a->set_value (‘c’);
$a->my_class(‘d’);
?>
 

A.c
B.b
C.a
D.d
E.e

3. 如何让类中的某些方法无法在类的外部被访问?
A.把类声明为 private
B.把方法声明为 private
C.无法实现
D.编写合适的重载方法(overloading method)

4. 哪种 OOp 设计模式能让类在整个脚本里只实例化一次?
A.MVC 模式
B.抽象工厂模式(Abstract factory)
C.单件模式(Singleton)
D.代理模式(proxy)
E.状态模式(State)

5. 借助继承,我们可以创建其他类的派生类。那么在 pHp 中,子类最多可以继承几个父类?
A.1 个
B.2 个
C.取决于系统资源
D.3 个
E.想要几个有几个

6. 以下脚本近似的表示了一种在 pHp4 中无法实现的特性,请问这个特性叫什么?
 

代码示例:
class my_class
{
function my_funct ($my_param)
{
user_error ("please define me", E_ERROR);
}
function b()
{
return 10;
}
}
?>

A.多重继承
B.接口
C.抽象方法
D.private 方法
E.函数重载(function overloading)

7. 假设定义了一个 testclass 类,它的构造函数的函数名是什么?
15
A.__construct
B.initialize
C.testclass
D.__testclass
E.只有 pHp5 才支持构造函数

8. 一个类如何覆盖默认的序列化机制?
A.使用__shutdown 和__startup 方法
B.调用 register_shutdown_function()函数
C.使用__sleep()和__wakeup()方法
D.无法覆盖默认序列化机制
E.使用 ob_start()将类放入输出缓冲中

9. 以下哪些面向对象的概念无法在 pHp4 中实现?
抽象类
Final 类
public、private、protected(ppp)方法
接口
A.抽象类
B.ppp 方法
C.ppp 方法和接口
D.以上所有都不可用
E.以上所有都可用

10.如何在类的内部调用 mymethod 方法?
A.$self=>mymethod();
B.$this->mymethod();
C.$current->mymethod();
D.$this::mymethod()
E.以上都不对

11.以下脚本输出什么?
 

代码示例:
class my_class
{
var $my_var;
function _my_class ($value)
{
$this->my_var = $value;
}
}
$a = new my_class (10);
echo $a->my_var;
?>
 

A.10
B.Null
C.Empty
D.什么都没有
E.一个错误

12.以下脚本输出什么?
 

代码示例:
class my_class
{
var $value;
}
$a = new my_class;
$a->my_value = 5;
$b = $a;
$b->my_value = 10;
echo $a->my_value;
?>
 

A.10
B.5
C.2
D.Null
E.什么都没有

13.以下脚本输出什么?
 

代码示例:
$global_obj = null;
class my_class
{
var $value;
function my_class()
{
global $global_obj;
$global_obj = &$this;
}
}
$a = new my_class;
$a->my_value = 5;
$global_obj->my_value = 10;
echo $a->my_value;
?>


A.5
B.10
C.什么都没有
D.构造函数将报错
E.510

14.考虑如下一段代码,执行时,$eight_tenths->to_string 方法返回的字符串是 8/10 而不是希望的 4/5,为什么?
 

代码示例:

class fraction {
var $numerator;
var $denominator;
function fraction($n, $d) {
$this->set_numerator($n);
$this->set_denominator($d);
}
function set_numerator($num) {
$this->numerator = (int)$num;
}
function set_denominator($num) {
$this->denominator = (int)$num;
}
function to_string() {
return “{$this->numerator} / {$this->denominator}”;
}
}

function gcd($a, $b) {
return ($b > 0) ? gcd($b, $a % $b) : $a;
}

function reduce_fraction($fraction) {
$gcd = gcd($fraction->numerator,
$fraction->denominator);
$fraction->numerator /= $gcd;
$fraction->denominator /= $gcd;
}
$eight_tenths = new fraction(8,10);
/* Reduce the fraction */
reduce_fraction($eight_tenths);
var_dump($eight_tenths->to_string());
?>
 

A.reduce_fraction 函数必须返回一个值
B.reduce_fraction 函数必须接受一个整型值
C.gcd 函数有问题
D.必须通过引用的方式传递$eight_tenths 对象
E.对象的实例不能传递给方法以外的其他结构。

15.以下代码是做什么的?
 

代码示例:
<?php
require_once("myclass.php");
myclass::mymethod();
?>
 

A.静态调用 mymethod 方法
B.生成 myclass 的实例并调用 mymethod 方法
C.产生一个语法错误
D.默认 myclass 类最后被创建出的实例并调用 mymethod()
E.调用名为 myclass::mymethod()的函数

16.pHp 中有静态类变量吗?
A.有
B.没有

17.以下脚本输出什么?
 

代码示例:
class a
{
function a ($x = 1)
{
$this->myvar = $x;
}
}
class b extends a
{
var $myvar;
function b ($x = 2)
{
$this->myvar = $x;
parent::a();
}
}
$obj = new b;
echo $obj->myvar;
?>

A.1
B.2
C.一个错误,因为没有定义 a::$myvar
D.一个警告,因为没有定义 a::$myvar
E.什么都没有

18.如何即时加载一个类?
A.使用__autoload 魔术函数
B.把它们定义为 forward 类
C.实现一个特殊的错误处理手段
D.不可能
E.用有条件限制的 include 来包含它们

19.__________提供了一个高性能的解决面向对象中重复出现的问题的方案?
答案:__________

20.以下脚本输出什么?
 

代码示例:
class a
{
function a()
{
echo \parent called\;
}
}
class b
{
function b()
{
}
}
$c = new b();
?>

A.parent called
B.一个错误
C.一个警告
D.什么都没有


    
[3]腾讯php程序员部分面试题及答案分享
    来源: 互联网  发布时间: 2013-12-24

3,请说明在php.ini中safe_mode开启之后对于PHP系统函数的影响

safe_mode是提供一个基本安全的共享环境。在一个多用户共享的phpweb服务器上,当这台服务器开启了safe_mode模式,有以下函数将会受到影响。首先,一下尝试访问文件系统的函数将会被限制,运行服务器的用户id,如果想要尝试操作某个文件,必须要用户该文件的读取或者写入的访问权限。

因此,在safe_mode打开的情况下,下列函数将会收到限制:
ckdir,move_uploaded_file,chgrp,parse_ini_file,chown,rmdir,copy,rename,fopen,require,highlight_file,show_source,include,symlink,link,touch,mkdir,unlink

以上都是跟操作文件系统有关的函数,除此之外,一些php扩展的函数也会受到限制,不能在程序里面直接加载扩展,只能到php.ini里加载,而且php如果需要执行操作系统的程序时,必须在safe_mode_exec_dir中指定程序的路径,否则执行将失败。此外还有exec,shell_exec,pasathru,system,popen等函数会收到限制

 4,PHP5中魔术方法函数有哪几个,请举例说明各自的用法

魔术方法:__construct() :实例化对象时被调用;__destuct():当删除一个对象或者对象操作终止是被执行;__call():调用对象不存在方法时被调用;__get():调用对象不存在的属性时被调用;__set():设置对象不存在的属性时被调用;__toString():打印一个对象时被调用,比如echo $obj,print($obj);__clone():克隆对象时被调用,比如$t = new Test();$tt = clone $t;__sleep():serialize之前被调用,若对象比较大,想做一些删除在序列化,可以考虑使用该方法;__wakeup():unserialize之前被调用,做些对象的初始化;__isset()():检测对象是否存在属性的时候被调用,如 isset($c->name);__unset():unset一个对象属性时被调用,如:unset($c->name);__set_state():调用var_export时被调用,用__set_state的返回值作为 var_export的返回值;,__autoload():实例化一个对象时,如果对应的类不存在,在该方法被调用。

魔术常量:__LINE__:返回当前行号;__FILE__:返回文件的完整路径和文件名,如果用在包含文件里面,则返回包含文件名,自 php4.0.2开始,__FILE__总是包含一个绝对路径,而在此前的版本有时候会包含一个相对路径__FUNCTION__:返回函数名称(自 php4.3.0新加的)。自php5起本常量返回该函数被定义时的名称,区分大小写,在php4中该值总是小写;__CLASS__:返回类的名称,自 php4.3.0新加的,自php5起本常量返回该类被定义时的名称,区分大小写,在php4中该值总是小写的;__METHOD__:返回类的方法名。 php5新加的

 5,如何在命令行下运行PHP脚本(写出两种方式)同时向PHP脚本传递参数?

window下,假设php安装目录为c:\program files\php5\,那么使用命令窗口进入到该路径下,敲入php hello.php回车,则会执行当前路径下的hello.php文件,

如果要指向其他路径下php文件,可以在php 路径/hello.php ,这种形式称为CLI模式,我们平时通过浏览器看到的那种成为CGI模式,至于传递参数,php文件在cli模式下,直接通过在文件名称后面接参数,多个参数中间用空格隔开,在php文件里面是通过两个变量来获取参数的,一个是$argv,一个是$argc,前者是传递参数的数组,默认第一个为php文件的名称;后者为$argv的数组个数。

linux下,一般程序安装都会安装在/usr/bin/php下面,可以通过man php查看一下,如果有信息说明可以使用,使用方法类似于window下。如果前面这步成立,那么你可以直接 php php文件 来运行php文件,如果man php没有信息,则说明当前php执行文件没有在环境路径里面,可以修改环境路径包含php路径,也可以类似于window进入php路径,在执行 php php文件。其他类似于window下。

6,使对象可以像数组一样进行foreach循环,要求属性必须是私有
php5里面已经有了iterator接口,只要实现该接口,即可以实现对象私有属性被foreach遍历
 

代码示例:
<?
class Sample implements iterator{
private $var = array(1,2,3,4,5);
public function __construct(){}
public function rewind(){ reset($this->var);}
public function current(){return current($this->var);}
public function key(){return key($this->var);}
public function next(){return next($this->var);}
public function valid(){return ($this->current()!==false);}
}
$s = new Sample();
foreach($s as $k=>$v){ echo $k.'='.$v.'<br/>';}
?>

3. 简单说明PHP的垃圾收集机制是怎样的?
对变量有个引用计数,计数到0时变量被销毁。

4. 使对象可以像数组一样进行foreach循环,要求属性必须是私有。
(Iterator模式的PHP5实现,写一类实现Iterator接口)
我记得好像对象也可以foreach,或者用反射的方式。 如果真要迭代模式实现的话,去看设计模式或者java的写法了。

5. 请写一段PHP代码,确保多个进程同时写入同一个文件成功
代码:
   

代码示例:

    function writeData($path, $mode, $data){
                $fp          = fopen($path, $mode);
                $retries     = 0;
                $max_retries = 100;
                do {
                    if ($retries > 0) {
                        usleep(rand(1, 10000));
                    }
                    $retries += 1;
                }while (!flock($fp, LOCK_EX) and $retries <= $max_retries);

                if ($retries == $max_retries) {
                    return false;
                }
               
                fwrite($fp, "$data\n");
                flock($fp, LOCK_UN);
                fclose($fp);
                return true;
        }

6. 你用什么方法检查PHP脚本的执行效率(通常是脚本执行时间)和数据库SQL的效率(通常是数据库Query时间),并定位和分析脚本执行和数据库查询的瓶颈所在?
PHP脚本的执行效率
1, 代码脚本里计时。
2, xdebug统计函数执行次数和具体时间进行分析。,最好使用工具winCacheGrind分析
3, 在线系统用strace跟踪相关进程的具体系统调用。

数据库SQL的效率
sql的explain(mysql),启用slow query log记录慢查询。
通常还要看数据库设计是否合理,需求是否合理等。

想进入腾讯QQ吗?把以上的面试题全部搞会,然后拿着你的铺盖去腾讯吧,呵!!


    
最新技术文章:
▪PHP函数microtime()时间戳的定义与用法
▪PHP单一入口之apache配置内容
▪PHP数组排序方法总结(收藏)
▪php数组排序方法大全(脚本学堂整理奉献)
▪php数组排序的几个函数(附实例)
▪php二维数组排序(实例)
▪php根据键值对二维数组排序的小例子
▪php验证码(附截图)
▪php数组长度的获取方法(三个实例)
▪php获取数组长度的方法举例
▪判断php数组维度(php数组长度)的方法
▪php获取图片的exif信息的示例代码
▪PHP 数组key长度对性能的影响实例分析
▪php函数指定默认值的方法示例
▪php提交表单到当前页面、提交表单后页面重定...
▪php四舍五入的三种实现方法
▪php获得数组长度(元素个数)的方法
▪php日期函数的简单示例代码
▪php数学函数的简单示例代码
▪php字符串函数的简单示例代码
▪php文件下载代码(多浏览器兼容、支持中文文...
▪php实现文件下载、支持中文文件名的示例代码...
▪php文件下载(防止中文文件名乱码)的示例代码
▪解决PHP文件下载时中文文件名乱码的问题
▪php数组去重(一维、二维数组去重)的简单示例
▪php小数点后取两位的三种实现方法
▪php Redis 队列服务的简单示例
▪PHP导出excel时数字变为科学计数的解决方法
▪PHP数组根据值获取Key的简单示例
▪php数组去重的函数代码示例
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3