PHP面试笔试1

最近忙着面试,整理些笔试的题目和面试应该注意的问题。

先从笔试题开始:

1、echo(),print(),print_r()的区别?

Echo PHP语法,可以输出多个值,不能输出数组。

Print() PHP函数,可以输出单个简单类型的变量值。

Print_r() php函数,可以打印出复杂类型变量的值,如数组,对象。

 

 

2、mysql_fetch_row() 和mysql_fetch_array之间有什么区别?

mysql_fetch_rowGet a result row as an enumerated array 枚举型数组

mysql_fetch_arrayFetch a result row as an associative array, a numeric array, or both 关联数组、数值数组 或 两者

引申MYSQL的函数
    mysql_affected_rows — 取得前一次 MySQL 操作所影响的记录行数
    mysql_client_encoding — 返回字符集的名称*
    mysql_close — 关闭 MySQL 连接
    mysql_connect — 打开一个到 MySQL 服务器的连接
    mysql_create_db — 新建一个 MySQL 数据库*
    mysql_data_seek — 移动内部结果的指针*
    mysql_db_name — 取得结果数据*
    mysql_db_query — 发送一条 MySQL 查询*
    mysql_drop_db — 丢弃(删除)一个 MySQL 数据库*
    mysql_errno — 返回上一个 MySQL 操作中的错误信息的数字编码
    mysql_error — 返回上一个 MySQL 操作产生的文本错误信息
    mysql_escape_string — 转义一个字符串用于 mysql_query*
    mysql_fetch_array — 从结果集中取得一行作为关联数组,或数字数组,或二者兼有
    mysql_fetch_assoc — 从结果集中取得一行作为关联数组
    mysql_fetch_field — 从结果集中取得列信息并作为对象返回*
    mysql_fetch_lengths — 取得结果集中每个输出的长度*
    mysql_fetch_object — 从结果集中取得一行作为对象*
    mysql_fetch_row — 从结果集中取得一行作为枚举数组
    mysql_field_flags — 从结果中取得和指定字段关联的标志*
    mysql_field_len — 返回指定字段的长度*
    mysql_field_name — 取得结果中指定字段的字段名
    mysql_field_seek — 将结果集中的指针设定为制定的字段偏移量
    mysql_field_table — 取得指定字段所在的表名
    mysql_field_type — 取得结果集中指定字段的类型
    mysql_free_result — 释放结果内存*
    mysql_get_client_info — 取得 MySQL 客户端信息*
    mysql_get_host_info — 取得 MySQL 主机信息*
    mysql_get_proto_info — 取得 MySQL 协议信息*
    mysql_get_server_info — 取得 MySQL 服务器信息*
    mysql_info — 取得最近一条查询的信息*
    mysql_insert_id — 取得上一步 INSERT 操作产生的 ID
    mysql_list_dbs — 列出 MySQL 服务器中所有的数据库****
    mysql_list_fields — 列出 MySQL 结果中的字段****
    mysql_list_processes — 列出 MySQL 进程*
    mysql_list_tables — 列出 MySQL 数据库中的表****
    mysql_num_fields — 取得结果集中字段的数目
    mysql_num_rows — 取得结果集中行的数目
    mysql_pconnect — 打开一个到 MySQL 服务器的持久连接****
    mysql_ping — Ping 一个服务器连接,如果没有连接则重新连接
    mysql_query — 发送一条 MySQL 查询
    mysql_real_escape_string — 转义 SQL 语句中使用的字符串中的特殊字符,并考虑到连接的当前字符集
    mysql_result — 取得结果数据
    mysql_select_db — 选择 MySQL 数据库
    mysql_set_charset — 设置客户端的字符集
    mysql_stat — 取得当前系统状态
    mysql_tablename — 取得表名
    mysql_thread_id — 返回当前线程的 ID
    mysql_unbuffered_query — 向 MySQL 发送一条 SQL 查询,并不获取和缓存结果的行
3、写一个函数,能够遍历一个文件夹下的所有文件和子文件夹。

 

function show($dirs){
  $dir=opendir($dirs);
  While($f=readdir($dir))
  {
    If($f!=’.' && $f!=’..’)
    {
      $file=$dirs.’/’.$f;
       If(is_file($file))
        Echo ’文件名:‘.$file.’<br/>’;
         Else
            Show($file);
      }
  }
}            

 

4、写几个魔术方法并说明作用?


__call()当调用不存在的方法时会自动调用的方法

__autoload()在实例化一个尚未被定义的类是会自动调用次方法来加载类文件

__set()当给未定义的变量赋值时会自动调用的方法

__get()当获取未定义变量的值时会自动调用的方法

__construct()构造方法,实例化类时自动调用的方法

__destroy()销毁对象时自动调用的方法

__unset()当对一个未定义变量调用unset()时自动调用的方法

__isset()当对一个未定义变量调用isset()方法时自动调用的方法

__clone()克隆一个对象

__tostring()当输出一个对象时自动调用的方法

 

5、$_REQUEST、$_POST、$_GET、$_COOKIE、$_SESSION、$_FILE的意思是什么?


它们都是PHP预定义变量。

$_REQUEST用来获取post或get方式提交的值。

$_POST用来获取post方式提交的值。

$_GET用来获取get方式提交的值。

$_COOKIE用来获取cookie存储的值,

$_SESSION用来获取session存储的值,

$_FILE用来获取上传文件表单的值

 

6、magic_quotes_gpc()、magic_quotes_runtime()的意思是什么?


Magic_quotes_gpc()是php配置文件中的,如果设置为on则会自动POST,GET,COOKIE中的字符串进行转义,在‘之前加\

Magic_quotes_runtime()是php中的函数,如果参数为true则会数据库中取出来的单引号、双引号、反斜线自动加上反斜杠进行转义。

 

7、框架中什么是单一入口和多入口,单一入口的优缺点?


1)多入口就是通过访问不同的文件来完成用户请求。

单一入口只web程序所有的请求都指向一个脚本文件的。

 
2)单一入口更容易控制权限,方便对http请求可以进行安全性检查。

缺点:URL看起来不那么美观,特别是对搜索引擎来说不友好。

 

8、编写一个自定义函数提取这段路径的的后缀名。


“Www/hello/test.php.html?a=3&b=4”

Function geturltype($url){
    $info=parse_url($url);
    Return end(explode(‘.’,$info['path']));
}

 

9、对关系型数据库而言,索引是相当重要的概念,请回答有关索引几个问题:

a) 索引的目的是什么?

b) 索引对数据库系统的负面影响是什么?

c) 为数据表建立索引的原则有哪些?

d) 什么情况下不宜建立索引?

答:

索引的目的:

1、快速访问数据表中的特定信息,提高检索速度

2、创建唯一性索引,保证数据库表中每一行数据的唯一性

3、加速表和表之间的连接

4、使用分组和排序子句进行数据检索时,可以显著减少查询中分组和排序的时间

负面影响:创建索引和维护索引需要耗费时间,这个时间随着数据量的增加而增加;索引需要占用物理空间,不光是表需要占用数据空间,每个索引也需要占用物理空间;当对表进行增、删、改的时候索引也要动态维护,这样就降低了数据的维护速度。

建立索引的原则:

1、在最频繁使用的、用以缩小查询范围的字段上建立索引

2、在平频繁使用的、需要排序的字段上建立索引

什么情况下不宜建立索引:

1、对于查询中很少涉及的列或者重复值比较多的列,不宜建立索引

2、对于一些特殊的数据类型,不宜建立索引,比如文本字段(text)等。

 

 

10、HTTP状态码
1xx 消息 - 2xx 成功 - 3xx 重定向 - 4xx 请求错误 - 5xx 服务器错误
详见 http://baike.baidu.com/view/1790469.htm

 

11、include与require的区别?


Php在遇到include时就重新解释一次,如果一个页面中出现10次include,php就重新解释10次,而php遇到require时只解释一次,即使页面中出现多次require,php也直解释一次。

使用require包含文件时,被包含的文件当成了当前文件的一个组成部分,如果被包含的文件中有语法错误或者文件不存在,程序就提示错误信息,并结束执行。

使用include包含文件时,相当于指定了文件的路径,被包含的文件中有语法错误或者文件不存在时,页面只是给出警告信息,不响应程序本身的执行。

 

 

posted @ 2013-01-21 16:15  zaric  阅读(233)  评论(0编辑  收藏  举报