2017最新PHP面试题

这几天在面试,下面分享一下这几天面试所遇到的笔试题,目前还不打算工作,面试题会持续更新的,有些不想写答案了,有心的可以自己看着面试题查一下感觉记忆更深点。下面分享一下这几天遇到的php面试题。

掌贝面试题

1、分别列出如下类型的有符号的和无符号的TINYINT、SMALLINT、MEDLUMINT、INT

TINYINT-2^7 - 2^7-10 ~ 2^8-1

SMALLINT-2^15 - 2^15-1 0 ~ 2^16-1

MEDIUMINT-2^23 - 2^23-1 0 ~ 2^24-1

INT-2^31 - 2^31-1 0 ~ 2^32-1

2、PHP调试MYSQL储存过程的两种方法

php调用mysql存储过程和函数的方法一:

程序代码

$host="localhost";

$user="root";

$password="11212";

$db="samp_db";

$dblink=mysql_connect($host,$user,$password)

or die("can't connect to mysql");

mysql_select_db($db,$dblink)

or die("can't select samp_db");

$res=mysql_query("set @a=$password",$dblink);

$res=mysql_query("call aa(@a)",$dblink);

$res=mysql_query("select @a",$dblink);

$row=mysql_fetch_row($res);

echo $row[0];

php调用mysql存储过程和函数方法二:此方法需要db_mysqli.dll的支持!

调用带有select语句的存储过程就出现 PROCEDURE p can’t return a result set in the given context的错误。google了半天,在mysql官网上找到一些说法,db_mysql的模块不支持存储过程调用,解决方法是用db_mysqli。测试了一下,果然可以了。

用法比较简单,没啥好说的,从网上copy一段代码吧:

程序代码

<?php

$link = mysqli_connect(

'localhost',

'root',

'root',

'db_name');

if (!$link) {

printf("Can't connect to MySQL Server. Errorcode: %s\n", mysqli_connect_error());

exit;

}

if ($result = mysqli_query($link, "call se_proc('crm')")) {

while( $row = mysqli_fetch_array($result) ){

echo ($row[0]. "--------- SR. " . $row[1] . "

");

}

mysqli_free_result($result);

}

mysqli_close($link);

?>

3、MYSQL中InnoDB引擎的行锁是通过加在什么上完成(或称实现的)?为什么是这样子的?

Innodb的行锁是加在索引实现的;

   原因是:innodb是将primary key index和相关的行数据共同放在B+树的叶节点;innodb一定会有一个primary key,secondary index查找的时候,也是通过找到对应的primary,再找对应的数据行;

4、MYSQL数据库中有A、B两张表,A表中存储有3000W个手机号,B表中存储有1000W个手机号,用SQL代码实现交、并、差,如何做才能最快最高效的得到结果集?

5、在javascript中如何声明一个类?

var my = new MyClass();

6、null和undefined的区别是什么?

undefined表示变量声明但未初始化时的值,

null表示准备用来保存对象,还没有真正保存对象的值。从逻辑角度看,null值表示一个空对象指针。

任何时候都不建议显式的设置一个变量为undefined,但是如果保存对象的变量还没有真正保存对象,应该设置成null。

实际上,undefined值是派生自null值的,ECMAScript标准规定对二者进行相等性测试要返回true,即

 

alert(null==undefined);  // true

7、下面的代码,多久之后会弹出'end'?为什么?

var t=true

setTimeout{function(){t=false;},2000};

while(t){}

alert('end')

典型的死循环……js是单线程执行的,while里面死掉的时候setTimeout里面的函数是没机会执行的。

8、请问PHP中echo、print、print_r有什么区别?

echo是PHP语句, print和print_r是函数

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

echo     输出一个或者多个字符串,语句没有返回值,函数可以有返回值(即便没有用)  

print()    只能打印出简单类型变量的值(如int,string)

9、谈谈COOKIE与SESSION的区别,以及如何修改SESSION的生存时间

1.存放位置:

  session保存在服务器,cookie保存在客户端

2.存放的形式:

  session是以对象的形式保存在服务器,cookie以字符串的形式保存在客户端

3.用途:

  session适合做客户的身份验证,cookie适合保存用户的个人设置,爱好等

4.路径:

  session不能区分路径,同一用户在访问一个网站期间,所有的session在任何一个地方都可以访问到;cookie中如果设置了参数路径,那么同一个网站下的cookie互相访问不到

5.安全性:

  cookie不是很安全,别人可以分析存放在本地的cookie并进行cookie欺骗,session较cookie更安全一些

6.大小及数量限制:

  单个cookie在客户端的限制是3K,就是说一个站点在客户端存放的COOKIE不能3K。不同浏览器所含cookie的最大个数不同,一般30到50个;一般认为session没有大小限制

修改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);

10、写出你能想到的所有HTTP返回状态值,并说明用途(比如:返回404表示找不到页面)

"100" : Continue 

"101" : witching Protocols 

"200" : OK 

"201" : Created 

"202" : Accepted 

"203" : Non-Authoritative Information 

"204" : No Content 

"205" : Reset Content 

"206" : Partial Content 

"300" : Multiple Choices 

"301" : Moved Permanently 

"302" : Found 

"303" : See Other 

"304" : Not Modified 

"305" : Use Proxy 

"307" : Temporary Redirect 

HTTP 400 - 请求无效 

HTTP 401.1 - 未授权:登录失败 

HTTP 401.2 - 未授权:服务器配置问题导致登录失败 

HTTP 401.3 - ACL 禁止访问资源 

HTTP 401.4 - 未授权:授权被筛选器拒绝 

HTTP 401.5 - 未授权:ISAPI 或 CGI 授权失败 

HTTP 403 - 禁止访问 

HTTP 403 - 对 Internet 服务管理器
(HTML) 的访问仅限于 Localhost 

HTTP 403.1 禁止访问:禁止可执行访问 

HTTP 403.2 - 禁止访问:禁止读访问 

HTTP 403.3 - 禁止访问:禁止写访问 

HTTP 403.4 - 禁止访问:要求 SSL 

HTTP 403.5 - 禁止访问:要求 SSL 128 

HTTP 403.6 - 禁止访问:IP 地址被拒绝 

HTTP 403.7 - 禁止访问:要求客户证书 

HTTP 403.8 - 禁止访问:禁止站点访问 

HTTP 403.9 - 禁止访问:连接的用户过多 

HTTP 403.10 - 禁止访问:配置无效 

HTTP 403.11 - 禁止访问:密码更改 

HTTP 403.12 - 禁止访问:映射器拒绝访问 

HTTP 403.13 - 禁止访问:客户证书已被吊销 

HTTP 403.15 - 禁止访问:客户访问许可过多 

HTTP 403.16 - 禁止访问:客户证书不可信或者无效 

HTTP 403.17 - 禁止访问:客户证书已经到期或者尚未生效 

HTTP 404.1 - 无法找到 Web 站点 

HTTP 404 - 无法找到文件 

HTTP 405 - 资源被禁止 

HTTP 406 - 无法接受 

HTTP 407 - 要求代理身份验证 

HTTP 410 - 永远不可用 

HTTP 412 - 先决条件失败 

HTTP 414 - 请求 - URI 太长 

HTTP 500 - 内部服务器错误 

HTTP 500.100 - 内部服务器错误 - ASP 错误 

HTTP 500-11 服务器关闭 

HTTP 500-12 应用程序重新启动 

HTTP 500-13 - 服务器太忙 

HTTP 500-14 - 应用程序无效 

HTTP 500-15 - 不允许请求 global.asa 

Error 501 - 未实现 

HTTP 502 - 网关错误

11、实现中文字符串截取无乱码的方法

function GBsubstr($string, $start, $length) {

if(strlen($string)>$length){

   $str=null;

   $len=$start+$length;

   for($i=$start;$i<$len;$i++){

    if(ord(substr($string,$i,1))>0xa0){

     $str.=substr($string,$i,2);

     $i++;

    }else{

     $str.=substr($string,$i,1);

    }

   }

   return $str.'...';

}else{

   return $string;

}

}

12、写一个函数,能够遍历一个文件夹下的所有文件和子文件夹

function get_dir_info($path){

$handle =
opendir($path);//打开目录返回句柄

while(($content =
readdir($handle))!== false){

$new_dir = $path .
DIRECTORY_SEPARATOR .$content;

if($content ==
'..' || $content == '.'){

continue;

}

if(is_dir($new_dir)){

echo
"<br>目录:".$new_dir
. '<br>';

get_dir_info($new_dir);

}else{

echo "文件:".$path.':'.$content
.'<br>';

}

}

}

get_dir_info($dir);

13、请写一段PHP代码,确保多个进程同时写入同一个文件成功

<?php

$fp =
fopen("/tmp/lock.txt","w+");

if(flock($fp,
LOCK_EX)){// 进行排它型锁定

fwrite($fp,"Write something
here\n");

flock($fp,
LOCK_UN);// 释放锁定

}else{

echo
"Couldn't lock the file !";

}

fclose($fp);

?>

14、请写出并说明如何在命令行下运行PHP脚本(写出两种方式)同时向PHP脚本传递参数?

首先进入php安装目录

php -f d:/wamp/www/1.php 其中-f参数指定要执行的php文件

php -r phpinfo(); 其中-r表示直接执行php代码,无需写开始结束标记

上海丹阳有限公司

1、删除员工表(staff)里的ID为1的记录,请写出sql语句

2、查询员工表(staff)里的id为1和id为2的记录,请写出sql语句

3、强制删除text文件夹下的所有文件,请写出Linux命令

4、把文件dir1里面的所有文件移动到dir2文件夹下,请写出Linux命令,

5、请写出判断邮箱地址的正则表达式,如有其它方法,请写出:

6、以下是httpd conf文件里的一段代码,想开启URL重写,请问怎么操作?有没有其它的方法可以实现?

#LoadModule request_module
modules/mod_requet_so

#LoadModule reqtimeout_module
modules/mod_reqtimeout_so

#LoadModule rewrite_module
modules/mod_rewrite_so

#LoadModule sed_module modules/mod_sed so

7、PHP里is_array方法的用途

8、请阅读下面的代码并写出输出结果;

class demo{

protected $str='abc';

function __construct(){

$this->str='def';

}

public function test(){

echo $this->str='jkl';

}

function __destruct(){

$this->str='ghi';

}

}

$obj=new demo();

$obj->test();

9、请说出.PHTML文件的用途:

上海家喔电子商务有限公司

3、JS弹出对话框有alert(),prompt(),confim(),他们区别是什么,获得焦点函数是什么。

4、利用jQuery,修改所有P元素的背景色为红色

5、什么是跨域访问?请写出至少一种解决方案。

6、myisam与innodb的区别。

7、写出发帖最多的5个人的sql

8、mysql数据优化,说说你做过的数据优化方案

9、简述下面程序的输出结果,简要说明原因,并解决

<?php

$temp = 0 =='a'?1:2;

echo $temp;

?>

11、请说一下MVC模式原理

12、请说一下smarty模板引擎的原理

13、PHP使用正则的方式,写出验证邮箱的正则

14、php中传值与引用的区别

15、php中获得当前脚本的路径

16、heredoc是一种特殊的字符串,它是如何组成的

17、将testserver文件夹及其下所有子文件夹及文件修改为www的拥有者

18、每天晚上19:00执行一次程序text.sh  如何处理?

19、如何修改配置 ,使得能上传超过20M大小的文件

保生堂面试题

1、用PHP写出二分法算法。

2、写一个函数,算出两个文件的相对路径

3、表单中GET与POST提交方法的区别

4、session与cookie的区别?

5、数据库中的事务,事件、存储过程分别是什么?如何使用?简要阐述

6、尽可能多的谈谈自己对数据库优化的理解

7、用PHP打印出前一天的时间格式是2016-5-10
22:21:20

8、echo(),print(),print_r()的区别

9、能够使HTML和PHP分离开使用的模板

10、写出你所知道的版本控制器的软件

11、尽可能多的写出一下函数的作用?

ucwords() array_search() array_unique()
array_shuffle() array_flip()

strap_tags() array_map() rtrim()
array_slice() array_merge() array_diff()

str_pad() array_combine() array_unshift()
http_build_query() range()

unset() array_rand() strrev()
substr_count() strnatcmp() join() strpos() isset()

12、封住一个函数获取客户端IP地址的方法?

(提示:HTTP_CLIENT_IP 
HTTP_X_FORWARDED_FOR REMOTE_ADDR)

13、请说明php中传值与引用的区别。什么时候传值什么时候引用?

14、用PHP写出单例模式

远丰面试题

1、$row1=mysql_fetch_row()和$row2=mysql_fetch_array()有什么区别?

2、表单中get与post的提交方法的区别。

3、session与cookie的区别。

4、语句include和require能把另外一个文件包含到当前文件中,他们的区别是?为了避免多次包含同一文件,可以用语句()来代替他们

5、以下代码输出什么内容,为何?

$num = 10;

function foo(){

$num = $num*10;

}

foo{};

echo $num;

6、如何声明一个名为:“myclass”的方法和属性的类?如何实例化一个名为“myclass”的对象?

7、检测一个变量是否有设置的函数是?是否为空的函数是?

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

9、谈谈对mvc的认识,写出你了解或者熟悉的PHP框架名称,面向对象的3大特性是什么?

10、以下函数有什么作用?分别写出每个函数的作用。

error_reporting();

header();

function_exists();

ini_set();

ob_start();

session_start()

css及js部分

1、如何使用一个圆角矩形高度自适应。

2、相同的文字在IE中显示红色,在火狐中显示蓝色,写出CSS代码。

3、假设a.html和b.html在同一文件夹下面,用javascript实现当打开a.html页面之后5秒后跳转到b.html

4、常用的JS框架

5、什么是Ajax?其实现原理或工作过程简述。

6、CSS中,.div()
#div() div() 有什么区别?

7、写出下列函数含义

explode(),array_shift(),is_array(),addslashes(),opendir(),file_exissts(),preg_match_all(),array_unique(),krsort(),file_get_contents(),strip_tags(),is_numeric(),strtotime(),md5(),range(),htmlspecialchars(),define()

百胜公司

1、用PHP打印前一天的时间格式是2006-5-10
22:21:21

2、使用那些工具进行版本控制

3、列出您用的模板引擎

4、大流量的网站,用什么样的方法来解决访问量问题

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

6、在PHP中error_reporting这个函数有什么作用

7、请用正则表达式写一个函数验证电子邮箱的格式是否正确

8、如何通过javascript判断一个窗口是否已经被屏蔽

9、写出session的运行机制

10、防止sql注射漏洞一般用什么函数

11、在HTTP1.0中,状态码401的含义是什么

12、请写出PHP5的构造函数和析构函数

13、写出PHP中链接到页面的URL的预定义常量

14、以Apache模块的方式安装PHP,在文件http.conf中首先要用到什么语句动态加载PHP模块,然后再用什么语句使所有扩展名为php的文件都作为PHP脚本处理?

15、语句include和require都能把另外一个文件包含到当前文件中,他们的区别分别是什么?为了避免多次性包含同一文件,可以用语句什么方法来代替他们?

16、类的属性可以序列化后保存到session中,从而以后可以恢复整个类,这要用到的函数是什么?

17、有一表 menu(mainmenu,submenu,url),请用递归法写出一树形菜单,将所有的menu列出来。

18、某内容管理系统中,表message有如下字段 id(文章id),title(文章标题) content(文章内容),category_id(文章分类id),hits(点击量)创建上表,写出sql语句

19、同样上述管理系统,表comment记录用户回复内容,字段如下:

comment_id(回复id),id(文章id,关联message表中的id),comment_content(回复内容)

现通过查询数据库需要得到以下格式的文章标题列表,并按照回复数量排序,回复最高的排在最前面:(文章id,文章标题,点击量,回复数量)

用一个sql语句完成上述查询,如果文章没有回复则回复数量id为0。

目前就这些,还在面试中,会持续更新的。

本文属原创内容,为了尊重他人劳动,转载请注明本文地址:

http://www.cnblogs.com/luokakale/p/7445431.html

上一篇:MVC中使用EF的技巧集(一)


下一篇:使用cmake自动构建工程