一.必答题
1.(算法题)有1~5000一组乱序数列,请使用伪代码对该数进行排列.
<?php
// $arr=array(1,2,3,4,5,6,7,8,9.....5000);
$arr = range(1, 50); //生成1-5000数组
shuffle($arr); //乱序
//冒泡排序法
function bubbleSort($arr)
{
$total = count($arr);
for ($i = 0; $i < $total; $i++) {
for ($j = 0; $j < $total - $i - 1; $j++) {
if ($arr[$j] > $arr[$j + 1]) {
$tmp = $arr[$j];
$arr[$j] = $arr[$j + 1];
$arr[$j + 1] = $tmp;
}
}
}
return $arr;
}
//快速排序
function quick($arr)
{
$total = count($arr);
$left = [];
$right = [];
if ($total <= 1) {
return $arr;
}
for ($i = 1; $i < $total; $i++) {
if ($arr[0] > $arr[$i]) {
$left[] = $arr[$i];
} else {
$right[] = $arr[$i];
}
}
$left = quick($left);
$right = quick($right);
return array_merge($left, [$arr[0]], $right);
}
print_r(bubbleSort($arr));
print_r(quick($arr));
2.(算法题)公鸡3元每只,母鸡5元每只,小鸡1元3只,一百元钱买一百只鸡,请用伪代码写出求公鸡,母鸡和小鸡的数目
答案
<?php
for($y=0;$y<=20;$y++){
for($x=0;$x<=(100/3);$x++){
for($z=0;$z<=100;$z++){
if($x+$y+$z==100 && (($x*3)+($y*5)+($z/3))==100){
echo '公鸡'.$x.",母鸡".$y.",小鸡".$z."<br>";
}
}
}
}
3.(算法题)1,1,2,3,5,8,13,21,34.。。。 求第30位的数是多少,请用伪代码描述其实现方法
<?php
$f1=1;
$f2=1;
for($i=3;$i<=30;$i++){
$f3=$f1+$f2;
$f1=$f2;
$f2=$f3;
}
echo $f3;
二.基础选答题
1.(基础题)请描述你经常使用的php函数及其主要作用(最少5个)
array_pop() 弹出数组的最后一个元素
explode() 按特点符号,分隔字符串,返回数组
implode() 按特点符号,连接数组成为字符串
substr() 取出字符串中的一部分
strrpos() 获得字符出现的最后的个位置
2.(基础题)请描述一种你常用的开发框架(语言不限), 主要使用方法。
thinkphp laravel
(如果框架是自己开发的,请用类图大致描述框架结构)
3.(基础题)请描述一种你常用的ajax调用方法。
$.ajax $.post $.get
4.(基础题)请描述你常用的HTML标记及其主要作用。(最少5种)
<pre></pre> 原样输出
<table></table> 表格
<script></script> js脚本
<style></style> 页面模式
<form> 表单
<input type=”text” /> input标记
</form> 表单结束
<div></div> div
<span></span> 行内
<select> 下拉列表
</select> 下拉列表结束
5.(基础题) 请描述你常用的javascript函数。
document.getElementById();
document.getElementsByTag();
document.getElementsByName();
setInterval()
setTimeOut()
三.论述与扩展选答题——论述与扩展题各选一道作答
1.(论述题)请用类屯举例描述mvc结构
M是model模型,业务逻辑层,V是视图view,C是控制器
2.(论述题)请用简单的语言描述一下HTTP协议
HTTP协议就是客户机与服务器的请求与响应。
- 首先客户机与服务器需要建立连接。只要单击某个超级链接,HTTP的工作就开始了。
- 建立连接后,客户机发送一个请求给服务器,请求方式的格式为:统一资源标识符(URL)、协议版本号,后边是MIME信息包括请求修饰符、客户机信息和可能的内容。
- 服务器接到请求后,给予相应的响应信息,其格式为一个状态行,包括信息的协议版本号、一个成功或错误的代码,后边是MIME信息包括服务器信息、实体信息和可能的内容。
客户端接收服务器所返回的信息通过浏览器显示在用户的显示屏上,然后客户机与服务器断开连接。
3.(扩展题)请描述一下在linux下php的编译过程
- 获得源码包
- 解压源码包
- 使用configure检查并配置安装需要的系统环境
- Make编译源代码并生成安装文件
- Make install命令进行安装
整合apache与PHP
4.(扩展题)请描述一下本地字节序于网络字节序的区别
字节序:大于一个字节的数据 ,在内存中的存放顺序。
本地字节序:与系统有关,不同的CPU有不同的字节序。分为两种:小尾字节序就是低位字节排放在内存的低端,高位字节排放在内存的高端。大尾字节序就是高位字节排放在内存的低端,低位字节排放在内存的高端
网络字节序:TCP/IP各层协议将字节序定义为大尾,因此TCP/IP协议中使用的字节序通常称之为网络字节序。
5.请说明表单中 get与post提交方法的区别?
GET是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,在URL中可以看到。
POST是通过HTTP POST机制,将表单内各个字段与其内容放置在HTML HEADER内一起传送到ACTION属性所指的URL地址。用户看不到这个过程。
GET传送的数据量较小,不能大于2KB。POST传送的数据量较大,一般被默认为不受限制。但理论上,一般认为不能超过100KB
6.请说明php中include,require,include_once,require_once的区别?
include函数:会将指定的文件读入并且执行里面的程序;
require函数:会将目标文件的内容读入,并且把自己本身代换成这些读入的内容;
include_once 函数:在脚本执行期间包含并运行指定文件。此行为和 include 语句类似,唯一区别是如果该文件中已经被包含过,则不会再次包含。如同此语句名字暗示的那样,只会包含一次;
require_once 函数:和 require 语句完全相同,唯一区别是 PHP 会检查该文件是否已经被包含过,如果是则不会再次包含。
include与require除了在处理引入文件的方式不同外,最大的区别就是:include在引入不存文件时产生一个警告且脚本还会继续执行,而require则会导致一个致命性错误且脚本停止执行。
7.请说明 PHP 中传值与传引用的区别。什么时候传值什么时候传引用?
按值传递:函数范围内对值的任何改变在函数外部都会被忽略
按引用传递:函数范围内对值的任何改变在函数外部也能反映出这些修改
优缺点:按值传递时,php必须复制值。特别是对于大型的字符串和对象来说,这将会是一个代价很大的操作。
8.请说明php中mysql_connect 和 mysql_pconnect两个函数的区别?
mysql_pconnect() 函数打开一个到 MySQL 服务器的持久连接。
mysql_connect() 函数打开非持久的 MySQL 连接。
两者的区别主要有两个:
-
在进行数据库连接时,函数会先找同一个host, 用户和密码的persistent(持续的)的链接,如果能找到,则使用这个链接而不返回一个新的链接。
-
mysql_pconnect()创建的数据库连接在脚本执行完毕后仍然保留,可以被后来的代码继续使用,mysql_close()函数也不会关闭mysql_pconnect()创建的链接。
6.请用正则表达式写出一个函数验证ip地址的格式是否正确?
/^((25[0-5]|2[0-4]d|1d{2}|d{1,2}).){3}(25[0-5]|2[0-4]d|1d{2}|d{1,2})$/
7.SQL查询语句如下:select * from table where (ID = 10) or (ID = 32) or (ID = 22) or (ID = 76) or (ID = 13) or (ID = 44)让结果按10,32,22,76,13,44的顺序检索出来,请问如何书写?
select * from table where (ID = 10) or (ID = 32) or (ID = 22) or (ID = 76) or (ID = 13) or (ID = 44) order by field(ID,10,32,22,76,13,44)
8.请写出以下三个程序的执行结果
<?php
$empty = '';
$null = NULL;
$bool = FALSE;
$notSet;
$array = array();
$a = "hello";
$b = &$a;
unset($b);
$b = "world";
echo $a; //hello
<?php
$empty = '';
$null = NULL;
$bool = FALSE;
$notSet;
$array = array();
$a = 1;
$x = &$a;
$b = $a++;
echo $b;
//1
<?php
$a = 1;
fadd($a);
echo $a;
function fadd($a){
$a +=100;
}
//1
9.请用任何一种语言写出一个函数,能够遍历一个文件夹下的所有文件及文件夹。
<?php
function my_candir($dir)
{
$files = [];
if ($handle = opendir($dir)) {
while (($file = readdir($handle))) {
if ($file != '..' && $file != '.') {
if (is_dir($dir . '/' . $file)) {
$files[$file] = my_candir($dir . '/' . $file);
} else {
$files[] = $file;
}
}
}
closedir($handle);
return $files;
}
}
print_r(my_candir("/Users/admin/Desktop/q"));
网友评论