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。
目前就这些,还在面试中,会持续更新的。
本文属原创内容,为了尊重他人劳动,转载请注明本文地址: