这几天在面试,下面分享一下这几天面试所遇到的笔试题,目前还不打算工作,面试题会持续更新的,有些不想写答案了,有心的可以自己看着面试题查一下感觉记忆更深点。下面分享一下这几天遇到的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、在java script中如何声明一个类?
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:$s