初级PHP程序员笔试题

答题时间:60 – 90分钟

一、基础及程序题(建议使用你擅长的语言:C/C++、PHP、Java)

1.写一个排序算法,可以是冒泡排序或者是快速排序,假设待排序对象是一个维数组。(提示:不能使用系统已有函数,另外请仔细回忆以前学习过的

基础知识)

2.实现一个字符串截取的函数,类似于substr,必须能够截取中文这种多字节编码。假设每个中文也是一个字符,普通的数字、符号、字母也是一个字

符。(提示:GB编码的中文字符高位范围是 0x81-0xFE )

3.写一个遍历指定目录下所有子目录和子文件的函数(提示:可以使用递归的方法)

4.写出匹配邮箱地址和URL的两个正则表达式。类似下面的:

邮箱地址:user_name.first@example.com.cn /

URL地址:http://www.example.com.cn/user_profile.php?uid=100

(提示:使用标准的正则表达式,就是PHP中preg_* 类的正则处理函数能够解析的正则)

二、数据库技术题

1.写出三种以上MySQL数据库存储引擎的名称(提示:不区分大小写)

2.说出你所知道的三种以上开源数据库的名称(提示:想想目前国外流行的开源数据库)

3.MySQL数据库中的字段类型varchar和char的主要区别是什么?那种字段的查找效率要高,为什么?

4.说出MySQL 4.0和MySQL

4.1版本的最主要的两个区别。如果你使用过MySQL 5,请说说MySQL 5跟MySQL

4的主要区别。(后半题选作)

5.MySQL数据库基本的三个优化法则是什么?(提示:从服务配置、应用、开发角度考虑)

三、综合技术题

1.请使用JavaScript写出三种产生一个Image

标签的方法(提示:从方法、对象、HTML角度考虑)

2.请使用CSS样式,描述两种方法在当前列中只显示一个div对象

3.请描述出两点以上XHTML和HTML最显著的区别

4.出五种以上你使用过的PHP的扩展的名称(提示:常用的PHP扩展)

5.了解MVC模式吗?请写出三种以上目前PHP流行的MVC框架名称(不区分大小写)ThinkPHP

QeePHP YiiPHP

6.写出15个以上你所知道的常用的Linux命令和它的功能

7.使用过Vim编辑器吗?如果使用过,如何在vim里切分多个可视化窗口,包括横排和纵排。(本题选作)

8.说说Linux下的find命令和grep命令的区别(本题选作)

9.请描述出七层网络模型的名称,由下到上(可以使用中文描述)

10.说说下面这些这些协议的全称和中文解释(提示:都是工作在应用层)SMTP、POP3、HTTP、FTP、DNS

11.使用过Memcache缓存吗,如果使用过,能够简单的描述一下它的工作原理吗?(本题选作)

12.请大致的说说Session的工作原理。(提示:与Cookie有相应的关系)

13.说说你所了解的搜索引擎包含那些技术?(本题选作)

四、项目及设计题

1.一个Web开发团队开发中,大致说说你所了解的所有成员的分工合作情况

2.说说你做过的最得意的项目或者个人开发作品(可以是个人作品,也可以是合作项目)

3.假设给你5台服务器,请大致的描述一下,如何使用你所熟悉的开源软件,搭建一个日PV

300万左右的中型网站

PHP程序员笔试题 (参考答案)

五、基础及程序题(建议使用你擅长的语言:C/C++、PHP、Java)

5.写一个排序算法,可以是冒泡排序或者是快速排序,假设待排序对象是一个维数组。(提示:不能使用系统已有函数,另外请仔细回忆以前学习过的

基础知识)

//冒泡排序(数组排序)

function bubble_sort($array)

{

$count =

count($array);

if ($count

<= 0) return false;

for($i=0; $i

for($j=$count-1; $j>$i; $j--){

if ($array[$j] < $array[$j-1]){

$tmp = $array[$j];

$array[$j] = $array[$j-1];

$array[$j-1] = $tmp;

}

}

}

return

$array;

}

//快速排序(数组排序)

function quicksort($array) {

if

(count($array) <= 1) return $array;

$key = $array[0];

$left_arr =

array();

$right_arr =

array();

for ($i=1; $i

if ($array[$i] <= $key)

$left_arr[] = $array[$i];

else

$right_arr[] = $array[$i];

}

$left_arr = quicksort($left_arr);

$right_arr =

quicksort($right_arr);

return array_merge($left_arr, array($key), $right_arr);

}

6.实现一个字符串截取的函数,类似于substr,必须能够截取中文这种多字节编码。假设每个中文也是一个字符,普通的数字、符号、字母也是一个字

符。(提示:GB编码的中文字符高位范围是 0x81-0xFE )

function GBSubstr($str, $len){

$count = 0;

for($i=0; $i

if($count == $len) break;

if(preg_match("/[\x80-\xff]/", substr($str, $i, 1))) ++$i;

++$count; }

return substr($str, 0, $i);

}

function GBSubstr2($src, $start=0,

$length=0){

$suffix="";

$len = strlen($src);

if ( $len <= $length ) return $src;

$cut_length = 0;

for( $idx = 0; $idx

$char_value = ord($src[$idx]);

if ( $char_value < 0x80 || ( $char_value

& 0x40 ) )

$cut_length++;

else

$cut_length = $cut_length + 3;

}

$curstr = substr($src, 0, $cut_length) ;

preg_match('/^([\x00-\x7f]|.{3})*/', $curstr, $result);

return $result[0];

}

function CSubstr($str, $start=0, $length, $charset="gbk",

$suffix=false){

if(function_exists("mb_substr")){

return mb_substr($str, $start, $length, $charset);

}

$re['utf-8'] =

"/[\x01-\x7f]|[\xc2-\xdf][\x80-\xbf]|[\xe0-\xef][\x80-\xbf]{2}|[\xf0-\xff][\x80-\xbf]{3}/";

$re['gb2312'] = "/[\x01-\x7f]|[\xb0-\xf7][\xa0-\xfe]/";

$re['gbk'] = "/[\x01-\x7f]|[\x81-\xfe][\x40-\xfe]/";

$re['big5'] = "/[\x01-\x7f]|[\x81-\xfe]([\x40-\x7e]|\xa1-\xfe])/";

preg_match_all($re[$charset], $str, $match);

$slice = join("", array_slice($match[0], $start,

$length));

if($suffix) {

return $slice ."…";

}

return $slice;

}

7.写一个遍历指定目录下所有子目录和子文件的函数(提示:可以使用递归的方法)

function dir_all ( $path ) {

$handler = opendir($path);

while (false!==($tmp = readdir($handler)))

{ if(is_dir( "$path/$tmp" )) {

if ($tmp=="." | $tmp=="..") continue;

echo $tmp."
\n";

dir_all ("$path/$tmp");

} else {

echo $tmp ."
\n";

}

}

}

8.写出匹配邮箱地址和URL的两个正则表达式。类似下面的:

邮箱地址:user_name.first@example.com.cn

URL地址:http://www.example.com.cn/user_profile.php?uid=100

(提示:使用标准的正则表达式,就是PHP中preg_* 类的正则处理函数能够解析的正则)

邮箱:/\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/

URL:/^http:\/\/[\w]+\.[\w]+[\S]*/

六、数据库技术题

6.写出三种以上MySQL数据库存储引擎的名称(提示:不区分大小写)

MyISAM、InnoDB、BDB(Berkeley

DB)、Merge、Memory(Heap)、Example、Federated、Archive、CSV、Blackhole、MaxDB

等等十几个引擎

7.说出你所知道的三种以上开源数据库的名称(提示:想想目前国外流行的开源数据库)

MySQL、SQLite、BDB(Berkeley DB)、PostgreSQL、Firebird

8.MySQL数据库中的字段类型varchar和char的主要区别是什么?那种字段的查找效率要高,为什么?

Varchar是变长,节省存储空间,char是固定长度。查找效率要char型快,因为varchar是非定长,必须先查找长度,然后进行数据的提取,比char定长

类型多了一个步骤,所以效率低一些

9.说出MySQL 4.0和MySQL

4.1版本的最主要的两个区别。如果你使用过MySQL 5,请说说MySQL 5跟MySQL

4的主要区别。(后半题选作)

MySQL 4.1 主要是比MySQL

4.0多了子查询和字符编码的支持两个特点。

MySQL5增加的功能比MySQL4要更多,包括存储过程、视图、事务等等

10.MySQL数据库基本的三个优化法则是什么,除了增加硬件和带宽?(提示:从服务配置、应用、开发角度考虑)

(1)系统服务优化,把MySQL的key_buffer、cache_buffer、query_cache等增加容量

(2)给所有经常查询的字段增加适当的索引

(3)优化SQL语句,减少Ditinct、Group、Join等等语句的操作

七、综合技术题

14.请使用JavaScript写出三种产生一个Image

标签的方法(提示:从方法、对象、HTML角度考虑)

(1)var img = new Image();

(2)var img = document.createElement_xById(“image”)

(3)img.innerHTML = “

/>”

15.请使用CSS样式,描述两种方法在当前列中只显示一个div对象

(1)

style=”width:19999px;”>

(2)

style=”clear:both;”>

16.请描述出两点以上XHTML和HTML最显著的区别

(1)XHTML必须强制指定文档类型DocType,HTML不需要

(2)XHTML所有标签必须闭合,HTML比较随意

17.出五种以上你使用过的PHP的扩展的名称(提示:常用的PHP扩展)

MB_Sring、Iconv、Curl、GD、SHM、libxml、socket、MySQL、PDO 等等

18.了解MVC模式吗?请写出三种以上目前PHP流行的MVC框架名称(不区分大小写)

FleaPHP、Zend Framework、CakePHP、Symfony、Plite、php.MVC、PHP on

Trax、Smutty 等等

19.写出10个以上你所知道的常用的Linux命令和它的功能

Ls 列目录

Cp 复制

Rm 删除

Mkdir 建立目录

Cd 切换目录

Ps 查看进程

Top 查看机器使用情况

20.使用过Vim编辑器吗?如果使用过,如何在vim里切分多个可视化窗口,包括横排和纵排。(本题选作)

横:split(sp)

纵:vsplit(vsp)

21.说说Linux下的find命令和grep命令的区别(本题选作)

Find:按照文件名查找

Grep:按照文件内容查找

22.请描述出OSI七层网络模型的名称,由下到上(可以使用中文描述)

物理层、数据链路层、网络层、传输层、会话层、表示层、应用层

23.说说下面这些这些协议的全称和中文解释(提示:都是工作在应用层)

SMTP、POP3、HTTP、FTP、DNS

SMTP (Simple Mail Transfer

Protocol) 简单邮件传输协议

POP3 (Post Office Protocol 3) 邮局协议第3版

HTTP (Hypertext Transfer Protocol) 超文本传输协议

FTP (File Transfer Protocol)文件传输协议

DNS (Domain Name System and Domain Name Service

protocol) 域名系统(服务)协议

24.使用过Memcache缓存吗,如果使用过,能够简单的描述一下它的工作原理吗?(本题选作)

Memcahce是把所有的数据保存在内存当中,采用hash表的方式,每条数据又key和value组成,每个key是独一无二的,当要访问某个值的时候先按照找到

值,然后返回结果。Memcahce采用LRU算法来逐渐把过期数据清除掉。

25.请大致的说说Session的工作原理。(提示:与Cookie有相应的关系)

26.说说你所了解的搜索引擎包含那些技术?(本题选作)

爬虫(采集)、切词(分词)、索引(存储)、查询以及其他相关技术

八、项目及设计题

4.一个Web开发团队开发中,大致说说你所了解的所有成员的分工合作情况

PS: 自行判定

5.说说你做过的最得意的项目或者个人开发作品(可以是个人作品,也可以是合作项目)

PS: 自行判定

6.假设给你5台服务器,请大致的描述一下,如何使用你所熟悉的开源软件,搭建一个日PV

300万左右的中型网站

PS:自行判定

参考结构:

3台Web服务器,两台MySQL数据库服务器,采用Master/Slave同步的方式减轻数据库负载,Web服务器可以结合Memcahe缓存来减少负载,同时三台Web服

务器内容一致,可以采用DNS轮训的方式来进行负载平衡

php mysql笔试题_初级PHP程序员笔试题相关推荐

  1. 2017年java笔试题_初级java程序员笔试题

    Java认证考试是业界唯一经Sun授权的Java认证,考试内容涉及所有Java相关知识.编程概念及applet开发技巧.下面是小编整理的关于java初级程序员面试题,欢迎大家参考! 一:判断题 1.J ...

  2. java 用程序代码解释继承_关于初级java程序员笔试题

    关于初级java程序员笔试题 Sun 认证Java程序员考试内容涉及Java所有相关知识.编程概念及applet开发技巧.下面是小编整理的关于初级java程序员笔试题,欢迎大家参考! 第一题:判断题 ...

  3. php程序员笔试题库,2017年初级PHP程序员笔试题

    2017年初级PHP程序员笔试题 即将面临毕业的准毕业生们是不是在为工作发愁了?下面是百分网小编精心为大家整理的2017年初级PHP程序员笔试题,希望对大家有帮助,更多内容请关注应届毕业生网! 一.基 ...

  4. 正则表达式笔试题php,2017年初级PHP程序员笔试题

    2017年初级PHP程序员笔试题 6.实现一个字符串截取的函数,类似于substr,必须能够截取中文这种多字节编码.假设每个中文也是一个字符,普通的数字.符号.字母也是一个字 符.(提示:GB编码的中 ...

  5. php程序员试题,php面试题带答案,php程序员笔试题与答案(一)

    php面试题带答案,php程序员笔试题与答案(一) php程序员招聘笔试题: 问题 1. 选择合适的答案填入空白处 PHP 是一种______脚本语言,基于______引擎.PHP 最常被用来开发动态 ...

  6. java程序员语录_「java程序员面试题」2018java程序员面试题整理 - seo实验室

    java程序员面试题 1.@PathVariable注解和@requestParam注解的区别. @RequestParam注解是获取静态URL传入的参数 @PathVariable是获取请求路径中的 ...

  7. java笔试题_一个Java程序员在百度的笔试题整理

    以下是程序员去百度的笔试题目整理 欢迎大家讨论,文末有福利. A 卷 Java中 ++ 操作符是线程安全的吗? a=a+b 与 a+=b的区别? 写出Java的单例模式 为什么在重写equals方法的 ...

  8. java websocket修改为同步_初级Java程序员需要掌握哪些主流技术才能拿25K?

    某天,小五看到小丽愁眉苦脸的,于是问了她有什么心事~ 公司的社区网站访问越来越慢了,特别是搜索功能,这该怎么优化呀? 你们都用了啥技术搭建的呀? springboot+mybatis,数据库mysql ...

  9. java 父子级json组装不用递归_初级Java程序员如何进阶

    主要内容: 疑问的无限递归 递归的结束条件 疑问的无限递归 去年我刚入行时,用SSM写了大概5个月的增删改查,并且在实际工作中从未自己搭建过SSM环境.倒不是不会,毕竟网上已经有很多博客直接贴出了配置 ...

最新文章

  1. 话里话外:“按单制造”的业务特点(二)
  2. 今年双11,200所大学快递无人送
  3. boost::hana::basic_tuple用法的测试程序
  4. java 调用python脚本过程_通过Java调用Python脚本
  5. ffmpeg学习笔记-native原生绘制
  6. LeetCode 1656. 设计有序流(数组)
  7. flutter DateTime 日期时间详细解析 Dart语言基础
  8. Hello,移动WEB—px,dp,dpr像素基础
  9. java tcp demo_详解Java使用TCP实现数据传输实例
  10. 用sql取a与b的交集_【庖丁解牛SQL(二)】SQL核心语法速查
  11. boost正则表达式库简单介绍
  12. R-CNN学习笔记4:Fast R-CNN
  13. 2016年读书总结(一)
  14. 概率图模型在图像处理中的应用
  15. 游戏建模资料大放送,3DMX+MAYA+ZBrush集教程,20G教学视频
  16. 嵌入式实操----基于RT1170 首板硬件之CAN BUS TJA1043显示调试(十八)
  17. 蒟蒻の算法题(~~完全不会~~的期望)01
  18. 如何快速定位并修复Bug
  19. AFN TTP状态 412 - 前置条件失败
  20. 30行python代码实现微信自动陪女盆友聊天(itchat-uos + 无限制调用)

热门文章

  1. win10自动弹出触摸键盘
  2. VM虚拟机里安装Linux系统教程详解
  3. 两个不错的音乐blog:
  4. java实用程序_java面向对象设计之实用程序类
  5. Vue开发的需要安装的软件
  6. 《成才之路》期刊简介及投稿要求
  7. Dell PowerEdge R940解析:四路顶配服务器维护平民化
  8. Freemark 常用代码总结2
  9. C# StackTrace
  10. linux nfs 协议,Linux 以 NFS 协议挂载 ReadyNAS 共享区