PHP笔试题及答案
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笔试题及答案的更多相关文章
- 精选30道Java笔试题附答案分析
精选30道Java笔试题解答 都是一些非常非常基础的题,是我最近参加各大IT公司笔试后靠记忆记下来的,经过整理献给与我一样参加各大IT校园招聘的同学们,纯考Java基础功底,老手们就不用进来了,免得笑 ...
- C,C++经典笔试题(答案)转自:http://blog.163.com/jianhuali0118@126/blog/static/377499702008230104125229/
一.请填写BOOL , float, 指针变量 与“零值”比较的 if 语句.(10分) 请写出 BOOL flag 与“零值”比较的 if 语句.(3分) 标准答案: if ( fla ...
- c语言笔试题(带答案)
填空: 1,short int a[10]={123, 456, 789}; sizeof(a)= 对于64位机来说,指针为8字节表示.其中 sizeof是一运算符,返回编译器为其分配的数组空间大小, ...
- 非常全的linux面试笔试题及答案
一.填空题:1. 在Linux系统中,以 文件 方式访问设备 .2. Linux内核引导时,从文件/etc/fstab 中读取要加载的文件系统.3. Linux文件系统中每个文件用 i节点来标识.4. ...
- Linux面试笔试题带答案【详解】
一.填空题:1. 在Linux系统中,以 ,该文件属性是 目录.8. 前台起动的进程使用 Ctrl+c 终止.9. 静态路由设定后,若网络拓扑结构发生变化,需由系统管理员修改路由的设置.10. 网络管 ...
- 前端几个笔试题及答案(bd)
1. 行内元素.块级元素和空元素(void)举例. 块级元素:<address>.<caption>.<dd>.<div>.<dl>.& ...
- Java笔试题及答案
1.下列不可作为java语言修饰符的是(D) A) a1 B) $1 C) _1 D) 11 答案:java标识符不能以数字开头,包含英文字母,数字,下划线以及$ 2.有一段java 应用程序,它的主 ...
- Spring,hibernate,struts的面试笔试题及答案
Hibernate工作原理及为什么要用? 原理: 1.读取并解析配置文件 2.读取并解析映射信息,创建SessionFactory 3.打开Sesssion 4.创建事务Transation ...
- php流行笔试题及答案
1.在PHP中,当前脚本的名称(不包括路径和查询字符串)记录在预定义变量(1)中:而链接到当前页面的URL记录在预定义变量(2)中. 答:echo $_SERVER['PHP_SELF']; echo ...
随机推荐
- iphone——日期处理
http://blog.csdn.net/lingedeng/article/details/6996599 Dates NSDate类提供了创建date,比较date以及计算两个date之间间隔的功 ...
- python,java操作mysql数据库,数据引擎设置为myisam时能够插入数据,转为innodb时无法插入数据
今天想给数据库换一个数据引擎,mysiam转为 innodb 结果 python 插入数据时失败,但是自增id值是存在的, 换回mysiam后,又可以插入了~~ 想换php插入试试,结果php数据引擎 ...
- python模块--time模块
1.时间戳 import time #------->> 时间戳 print(time.time()) 1525418832.2835853 2.结构化时间 #------->> ...
- 一款直接时空处理分析的开源数据库---geomesa
一款直接时空处理分析的开源数据库---geomesa,可用于交通轨迹数据存储分析等相关领域, 在分布式列数据库的基础上进行扩展,目前支持Accumulo, HBase, Cassandra, and ...
- 读懂IL代码就这么简单 ---- IL系列文章
读懂IL代码就这么简单 (一) 读懂IL代码就这么简单(二) 读懂IL代码就这么简单(三)完结篇 出处:http://www.cnblogs.com/zery/tag/IL%20%E7%B3%BB%E ...
- 在一个form中有两个submit,值分别为修改和删除,如何在提交时用js判断submit值为修改还是删除呢
同一个form里,不管哪个 submit 都是直接提交form表单里的内容. 要达到你的目的,就不能用类型为 submit 的按钮,要用 button,然后加onclick 方法来自定义预处理参数,然 ...
- psd文件导出为图片教程
美术给过来PSD文件好多层啊.怎么挨个把需要的图片导出来呢. 1. 选中 要导出的图片的图层 2.ctrl+N 新建个文档 然后把图片拉到 新的里面 然后点图像-裁剪 确定就行了,然后ctrl+s保 ...
- 笔记:配置 webpack dev server
笔记:配置 webpack dev server 安装 webpack-dev-server 组件 配置 webpack.config.js 配置 增加 html-webpack-plugin 组件 ...
- CentOS 6.5 下MySql主从、主主配置
参考网站: http://blog.csdn.net/faye0412/article/details/6280761 http://blog.csdn.net/kk185800961/article ...
- 第十一章 Helm-kubernetes的包管理器(上)
Helm - K8s的包管理器 11.1 Why Helm K8s能够很好的组织和编排容器,但它缺少一个更高层次的应用打包工具,Helm就是干这个的. 比如对于一个MySQL服务,K8s需要部署如下对 ...