1、表单提交get和post有何区别?

答:get的方式是把数据在地址栏中发送,get传送的数据量较小,不能大于2KB。post传送的数据量较大,一般被默认为不受限制。但理论上,IIS4中最大量为80KB,IIS5中为100KB。

2、用PHP打印出前一天的时间格式;

echo date("Y-m-d H:i:s",time()-(3600*24));或echo date("Y-m-d H:i:s",strtotime("-1 day"));

3、echo(),print(),print_r()的区别;

echo可以接多个参数,print只能接一个参数,它们都是PHP的语言结构,print_r是递规打印,用来打印数组或对象

4、优化MYSQL数据库的方法。

1) 将where中用的比较频繁的字段建立索引,联合索引。

2) 保证单表数据不超过200W,适时分割表。

3) 避免使用长连接。

4) 修改my.cnf里面的各项参数,比如最大连接数,查询缓存等。根据你的服务器内存来最大化调节那些配置参数。

5) 针对需求,使用正确的表引擎,是myisam或是innodb。

5.用PHP写出显示客户端IP与服务器IP的代码:

echo $_SERVER['REMOTE_ADDR'] //客户端ip

echo $_SERVER['SERVER_ADDR'] //服务器端ip

6、如何实现字符串翻转?

英文:

strrev($a)

中文或其他文字:

中文:GB2312, 代码是使用GB2312编码

<?php

function reverse($str)

{

$ret = "";

len=mbstrwidth(str,"GB2312");

for(i=0;i< len;i++)

{

arr[]=mbsubstr(str, $i, 1, "GB2312");

}

return implode("", array_reverse($arr));

}

print_r(reverse("你好"));

7、实现中文字串截取无乱码的方法。

mb_substr($str, 1, 1, "GB2312");

8、语句include和require的区别是什么?为避免多次包含同一文件,可用(?)语句代替它们?

在失败的时候:

include产生一个warning,而require产生直接产生错误中断

require在运行前载入

include在运行时载入

require_once

include_once

9、如何修改SESSION的生存时间。

session_set_cookie_params

10、有一个网页地址, 比如PHP研究室主页:
http://www.jb51.net/index.html,如何得到它的内容?

file_get_contents ('http://www.jb51.net/index.html');

curl:

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, "http://v.hao123.com/dianshi/?qq-pf-to=pcqq.c2c");

curl_setopt($ch, CURLOPT_HTTPHEADER, array(

'User-Agent: Mozilla/5.0 (Windows NT 6.2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.137 Safari/537.36'

));+

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

$return = curl_exec($ch);

curl_close($ch);

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

未授权

header("HTTP/1.0 404 Not
Found");

fast CGI中:

header("Status: 404 Not Found");

12、在PHP中,heredoc是一种特殊的字符串,它的结束标志必须?
成对出现

$a = <<EOD

good test

EOD;

13. 在PHP中error_reporting这个函数有什么作用? 
设定error的展示级别

14、mysql_fetch_row() 和mysql_fetch_array之间有什么区别? 
mysql_fetch_array() 是 mysql_fetch_row() 的扩展版本。除了将数据以数字索引方式储存在数组中之外,还可以将数据作为关联索引储存,用字段名作为键名。

15、检测一个变量是否有设置的函数是否?是否为空的函数是?
isset()
empty()

16、$arr = array('james', 'tom', 'symfony'); 请打印出第一个元素的值

print_r($arr[0]);

reset($arr);

print_r(current($arr));

print_r(array_shift($arr));

17. 写一个函数,尽可能高效的,从一个标准 url 里取出文件的扩展名
例如:
http://www.sina.com.cn/abc/de/fg.php?id=1 需要取出 php 或 .php

<?php

$url =
"http://www.sina.com.cn/abc/de/fg.php?id=1";

arr=parseurl(url);

pathArr=pathinfo(arr['path']);

print_r($pathArr['extension']);

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

<?php

function aGetAllFile($folder)

{

$aFileArr =
array();

if(is_dir($folder))

{

handle=opendir(folder);

while((file=readdir(handle)) !== false)

{

//如果是.或者..则跳过

if(file=="."||file == "..")

{

continue;

}

if(is_file(folder."/".file))

{

aFileArr[]=file;

}

else
if(is_dir(folder."/".file))

{

aFileArr[file] =
aGetAllFile(folder."/".file);

}

}

closedir($handle);

}

return $aFileArr;

}

$path = "/home/test/sql";

print_r(aGetAllFile($path));

19. 使用PHP描述冒泡排序和快速排序算法,对象可以是一个数组

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

function bubble_sort($array){

$count = count($array);

if ($count <= 0) return
false;

for($i=0; $i<$count;
$i++){

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

if ($array[$i] > $array[$j]){

$tmp = $array[$i];

$array[$i] = $array[$j];

$array[$j] = $tmp;

}

}

}

return $array;

}

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

function quick_sort($array) {

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

$key = $array[0];

$left_arr = array();

$right_arr = array();

for ($i=1;
$i<count($array); $i++){

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

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

else

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

}

$left_arr =
quick_sort($left_arr);

$right_arr =
quick_sort($right_arr);

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

}

20. 使用五种以上方式获取一个文件的扩展名 ;

function get_ext1($file_name){

return strrchr($file_name,
'.');

}

function get_ext2($file_name){

return substr($file_name,
strrpos($file_name, '.'));

}

function get_ext3($file_name){

return
array_pop(explode('.', $file_name));

}

function get_ext4($file_name){

return pathinfo($file_name,
PATHINFO_EXTENSION);

}

function get_ext5($file_name){

return
strrev(substr(strrev($file_name), 0, strpos(strrev($file_name), '.')));

}

21.session与cookie的区别?

答:session:储存用户访问的全局唯一变量,存储在服务器上的PHP指定的目录中的(session_dir)的位置进行的存放

cookie:用来存储连续訪問一个頁面时所使用,是存储在客户端,对于Cookie来说是存储在用户WIN的Temp目录中的。

两者都可通过时间来设置时间长短

22.数据库中的事务是什么?

答:事务(transaction)是作为一个单元的一组有序的数据库操作。如果组中的所有操作都成功,则认为事务成功,即使只有一个操作失败,事务也不成功。如果所有操作完成,

事务则提交,其修改将作用于所有其他数据库进程。如果一个操作失败,则事务将回滚,该事务所有操作的影响都将取消。

23、优化MySQL数据库的方法

答:

(1)、选取最适用的字段属性,尽可能减少定义字段长度,尽量把字段设置NOT NULL,例如'省份,性别',最好设置为ENUM

(2)、使用连接(JOIN)来代替子查询:

(3)、使用联合(UNION)来代替手动创建的临时表

(4)、事务处理:

a.保证数据完整性,例如添加和修改同时,两者成立则都执行,一者失败都失败

(5)、锁定表,优化事务处理:

a.我们用一个 SELECT 语句取出初始数据,通过一些计算,用 UPDATE 语句将新值更新到表中。

包含有 WRITE 关键字的 LOCK TABLE 语句可以保证在 UNLOCK TABLES 命令被执行之前,

不会有其它的访问来对 inventory 进行插入、更新或者删除的操作

(6)、使用外键,优化锁定表

a.把customerinfo里的customerid映射到orderinfo里的customerid,

任何一条没有合法的customerid的记录不会写到orderinfo里

(7)、建立索引:

(8)、优化查询语句

a.最好在相同字段进行比较操作,在建立好的索引字段上尽量减少函数操作

24、如何修改SESSION的生存时间

答:方法1:将php.ini中的session.gc_maxlifetime设置为9999重启apache

方法2:$savePath =
"./session_save_dir/";

$lifeTime = 小时 * 秒;

session_save_path($savePath);

session_set_cookie_params($lifeTime);

session_start();

方法3:setcookie() and
session_set_cookie_params($lifeTime);

25、谈谈对mvc的认识

答:由模型(model),视图(view),控制器(controller)完成的应用程序

由模型发出要实现的功能到控制器,控制器接收组织功能传递给视图;

26. 请写一个函数验证电子邮件的格式是否正确

答:function checkEmail($email)

{

$pregEmail =
"/([a-z0-9]*[-_/.]?[a-z0-9]+)*@([a-z0-9]*[-_]?[a-z0-9]+)+[/.][a-z]{2,3}([/.][a-z]{2})?/i";

return
preg_match($pregEmail,$email);

}

27、下面的程序会输入是否?

  $num = 10;

  function multiply(){

  $num = $num * 10;

  }

  multiply();

  echo $num;

  ?>

答:输出:10

28、$arr = array('james', 'tom',
'symfony'); 请打印出第一个元素的值

答:echo $array[0];

29、请将28题的数组的值用','号分隔并合并成字串输出

答:for($i=0;$i<count($array);$i++){
echo $array[$i].",";}

30、$a = 'abcdef'; 请取出$a的值并打印出第一个字母

答:echo $a{0} 或
echo substr($a,0,1)

31、

<?php

$str1 = null;

$str2 = false;

echo $str1==$str2 ? ‘相等’ : ‘不相等’;

$str3 = ”;

$str4 = 0;

echo $str3==$str4 ? ‘相等’ : ‘不相等’;

$str5 = 0;

$str6 = ’0′;

echo $str5===$str6 ? ‘相等’ : ‘不相等’;

?>

答案:相等 相等 不相等

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

答:Varchar是变长,节省存储空间,char是固定长度。查找效率要char型快,因为varchar是非定长,必须先查找长度,然后进行数据的提取,比char定长类型多了一个步骤,所以效率低一些

33、求两个日期的差数,例如2007-2-5 ~ 2007-3-6 的日期差数

方法一:

<?php

class Dtime

{

function get_days($date1, $date2)

{

$time1 = strtotime($date1);

$time2 = strtotime($date2);

return ($time2-$time1)/86400;

}

}

$Dtime = new Dtime;

echo $Dtime->get_days(’2007-2-5′, ’2007-3-6′);

?>

方法二:

<?php

$temp = explode(‘-’, ’2007-2-5′);

$time1 = mktime(0, 0, 0, $temp[1],
$temp[2], $temp[0]);

$temp = explode(‘-’, ’2007-3-6′);

$time2 = mktime(0, 0, 0, $temp[1],
$temp[2], $temp[0]);

echo ($time2-$time1)/86400;

方法三:echo abs(strtotime(“2007-2-1″)-strtotime(“2007-3-1″))/60/60/24 计算时间差

34、请写一个函数,实现以下功能:

字符串“open_door” 转换成 “OpenDoor”、”make_by_id” 转换成 ”MakeById”。

方法一:

function str_explode($str){

$str_arr=explode(“_”,$str);$str_implode=implode(” “,$str_arr);
$str_implode=implode

(“”,explode(” “,ucwords($str_implode)));

return $str_implode;

}

$strexplode=str_explode(“make_by_id”);print_r($strexplode);

方法二:$str=”make_by_id!”;

$expStr=explode(“_”,$str);

for($i=0;$i<count($expStr);$i++)

{

echo ucwords($expStr[$i]);

}

方法三:echo str_replace(‘ ‘,”,ucwords(str_replace(‘_’,’ ‘,’open_door’)));

35、echo count(“abc”); 输出什么?

答案:1

36、.以下的代码会产生什么?为什么?

$num =10;

function multiply(){

$num =$num *10;

}

multiply();

echo $num;

由于函式 multiply() 没有指定 $num 为全域变量(例如 global $num 或者 $_GLOBALS['num']),所以 $num 的值是 10。

37. HTTP协议中GET、POST和HEAD的区别?

HEAD: 只请求页面的首部。

GET: 请求指定的页面信息,并返回实体主体。

POST: 请求服务器接受所指定的文档作为对所标识的URI的新的从属实体。

(1)HTTP 定义了与服务器交互的不同方法,最基本的方法是 GET 和 POST。事实上 GET 适用于多数请求,而保留 POST 仅用于更新站点。

(2)在FORM提交的时候,如果不指定Method,则默认为GET请 求,Form中提交的数据将会附加在url之后,以?分开与url分开。字母数字字符原样发送,但空格转换为“+“号,其它符号转换为%XX,其中XX为
该符号以16进制表示的ASCII(或ISO Latin-1)值。GET请求请提交的数据放置在HTTP请求协议头中,而POST提交的数据则放在实体数据中;

GET方式提交的数据最多只能有1024字节,而POST则没有此限制。

(3)GET 这个是浏览器用语向服务器请求最常用的方法。POST这个方法也是用来传送数据的,但是与GET不同的是,使用POST的时候,数据不是附在URI后面传递的,而是要做为独立的行来传递,此时还必须要发送一个Content_length标题,以标明数据长度,随后一个空白行,然后就是实际传送的数据。网页的表单通常是用POST来传送的。

PHP笔试题及答案的更多相关文章

  1. 精选30道Java笔试题附答案分析

    精选30道Java笔试题解答 都是一些非常非常基础的题,是我最近参加各大IT公司笔试后靠记忆记下来的,经过整理献给与我一样参加各大IT校园招聘的同学们,纯考Java基础功底,老手们就不用进来了,免得笑 ...

  2. C,C++经典笔试题(答案)转自:http://blog.163.com/jianhuali0118@126/blog/static/377499702008230104125229/

    一.请填写BOOL , float, 指针变量 与“零值”比较的 if 语句.(10分) 请写出 BOOL   flag 与“零值”比较的 if 语句.(3分) 标准答案:      if ( fla ...

  3. c语言笔试题(带答案)

    填空: 1,short int a[10]={123, 456, 789}; sizeof(a)= 对于64位机来说,指针为8字节表示.其中 sizeof是一运算符,返回编译器为其分配的数组空间大小, ...

  4. 非常全的linux面试笔试题及答案

    一.填空题:1. 在Linux系统中,以 文件 方式访问设备 .2. Linux内核引导时,从文件/etc/fstab 中读取要加载的文件系统.3. Linux文件系统中每个文件用 i节点来标识.4. ...

  5. Linux面试笔试题带答案【详解】

    一.填空题:1. 在Linux系统中,以 ,该文件属性是 目录.8. 前台起动的进程使用 Ctrl+c 终止.9. 静态路由设定后,若网络拓扑结构发生变化,需由系统管理员修改路由的设置.10. 网络管 ...

  6. 前端几个笔试题及答案(bd)

    1.   行内元素.块级元素和空元素(void)举例. 块级元素:<address>.<caption>.<dd>.<div>.<dl>.& ...

  7. Java笔试题及答案

    1.下列不可作为java语言修饰符的是(D) A) a1 B) $1 C) _1 D) 11 答案:java标识符不能以数字开头,包含英文字母,数字,下划线以及$ 2.有一段java 应用程序,它的主 ...

  8. Spring,hibernate,struts的面试笔试题及答案

    Hibernate工作原理及为什么要用?  原理:  1.读取并解析配置文件  2.读取并解析映射信息,创建SessionFactory  3.打开Sesssion  4.创建事务Transation ...

  9. php流行笔试题及答案

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

随机推荐

  1. iphone——日期处理

    http://blog.csdn.net/lingedeng/article/details/6996599 Dates NSDate类提供了创建date,比较date以及计算两个date之间间隔的功 ...

  2. python,java操作mysql数据库,数据引擎设置为myisam时能够插入数据,转为innodb时无法插入数据

    今天想给数据库换一个数据引擎,mysiam转为 innodb 结果 python 插入数据时失败,但是自增id值是存在的, 换回mysiam后,又可以插入了~~ 想换php插入试试,结果php数据引擎 ...

  3. python模块--time模块

    1.时间戳 import time #------->> 时间戳 print(time.time()) 1525418832.2835853 2.结构化时间 #------->> ...

  4. 一款直接时空处理分析的开源数据库---geomesa

    一款直接时空处理分析的开源数据库---geomesa,可用于交通轨迹数据存储分析等相关领域, 在分布式列数据库的基础上进行扩展,目前支持Accumulo, HBase, Cassandra, and ...

  5. 读懂IL代码就这么简单 ---- IL系列文章

    读懂IL代码就这么简单 (一) 读懂IL代码就这么简单(二) 读懂IL代码就这么简单(三)完结篇 出处:http://www.cnblogs.com/zery/tag/IL%20%E7%B3%BB%E ...

  6. 在一个form中有两个submit,值分别为修改和删除,如何在提交时用js判断submit值为修改还是删除呢

    同一个form里,不管哪个 submit 都是直接提交form表单里的内容. 要达到你的目的,就不能用类型为 submit 的按钮,要用 button,然后加onclick 方法来自定义预处理参数,然 ...

  7. psd文件导出为图片教程

    美术给过来PSD文件好多层啊.怎么挨个把需要的图片导出来呢. 1. 选中 要导出的图片的图层 2.ctrl+N 新建个文档  然后把图片拉到 新的里面 然后点图像-裁剪 确定就行了,然后ctrl+s保 ...

  8. 笔记:配置 webpack dev server

    笔记:配置 webpack dev server 安装 webpack-dev-server 组件 配置 webpack.config.js 配置 增加 html-webpack-plugin 组件 ...

  9. CentOS 6.5 下MySql主从、主主配置

    参考网站: http://blog.csdn.net/faye0412/article/details/6280761 http://blog.csdn.net/kk185800961/article ...

  10. 第十一章 Helm-kubernetes的包管理器(上)

    Helm - K8s的包管理器 11.1 Why Helm K8s能够很好的组织和编排容器,但它缺少一个更高层次的应用打包工具,Helm就是干这个的. 比如对于一个MySQL服务,K8s需要部署如下对 ...