PHP面试题21-40

21.在PHP中error_reporting这个函数有什么作用? (1分)
答:设置错误级别与错误信息回报

22.JS表单弹出对话框函数是?获得输入焦点函数是? (2分)
答:弹出对话框: alert(),prompt(),confirm()
获得输入焦点 focus()

23.foo()和@foo()之间有什么区别?(1分)
答:@foo()控制错误输出

24、mysql_fetch_row() 和mysql_fetch_array之间有什么区别? (1分)
答:mysql_fetch_row是从结果集取出1行数组,作为枚举
mysql_fetch_array是从结果集取出一行数组作为关联数组,或数字数组,两者兼得

25、GD库是做什么用的? (1分)
答:gd库提供了一系列用来处理图片的API,使用GD库可以处理图片,或者生成图片。
在网站上GD库通常用来生成缩略图或者用来对图片加水印或者对网站数据生成报表。

26.面向对象编程
有两个重要的概念:类和对象
类是具备某项功能的抽象模型,实际应用中,还需要对类进行实例化后使用。这样就引入了对象的概念。
对象是类进行实例化后的一个产物,是一个实体。
封装 :把客观的事物封装成一个抽象的类。
继承:子类继承父类,可以使用父类的属性和方法。可以实现接口,同时实现接口中的所有方法
多态:覆盖和重载 子类可以覆盖父类中的方法;一个类中可以同时拥有同一个函数名的方法,但是方法的参数不同,实现的结果也不同。

27.php框架
熟悉YII ,Thinkphp还有laravel ,symfony2,cakephp

28.mysql存储引擎
ISAM: 查询速度快、增删改慢,支持全文索引、不支持外键、不支持事务
MyISAM: ISAM升级版
Memory: 数据驻留在内存、速度快、数据管理不稳定、断电后数据全部丢失
InnoDB: 速度较慢、支持外键、支持事务、不支持全文索引
使用的存储引擎
MyISAM:内容管理系统(新闻、官网、电商、软件下载、房屋、招聘...) 可读不可改 大部分是浏览信息
InnoDB:技术型网站(bbs、blog、webo、oa...)

29.数据库操作流程
link = mysql_connect("localhost","root","root"); mysql_select_db("test",link);
sql ="select * from table";result = mysql_query(sql); while(row =mysql_fetch_****(result) ){arr[]=row; }row = mysql_fetch_array(result) 意思:row['name'] 和row[1] 都可以取到值row = mysql_fetch_row(result)) 意思:row[1] 只有用索引取值,偏移量从0开始。
row = mysql_fetch_assoc(result)) 意思: $row['name'] 字段名作为索引取值 抽取一条记录转为 关联数组,失败返回false

30.php 加密函数
crypt(str[,slat]) 可以完成单向加密功能
md5()
sha1() 返回一个40位的十六进制数,
加密扩展库
Mcrypt() 和Mash

31、字符串“to upper case” 分别用php,shell ,js实现将字符串中的字符全部转换成大写并输出。(5分)
Php实现: echo strtoupper(‘to upper case’)
Shell实现:echo "to upper case" | tr 'a-z' 'A-Z'
Js实现:

32.防止SQL注入
1)一般使用 addslashes 函数
addslashes 函数在制定的预定义字符前添加反斜杠
对字段和密码MD5加密处理
预处理过滤处理

33、用PHP打印出前一天的时间,格式是2017-5-10 22:21:21
//echo date('Y-m-d H:i:s',time()-606024
echo date("Y:m:d H:i:s",strtotime("-1 day"));
?>

34.如何实现字符串翻转?
其实PHP本身就有字符串翻转的函数:strrev(),不妨试试echo strrev(str);不过 所有的这三种方法都不能解决中文字符串翻转的问题,会出错的。 代码 var)
{
res=""; for(i=0,j=strlen(var);i<j;i++) {res=var[i].res; } returnres;
}
tmpvar="wofang";res=reverse(tmpvar); echores;
?>

35.实现中文字串截取无乱码的方法。
mb_substr()

36.以下哪一句不会把 John 新增到 users 阵列?
users[] = 'john'; 成功把 John 新增到阵列 users。 array_add(users,’john’);
函式 array_add() 无定义。
array_push(users,‘john’); 成功把 John 新增到阵列 users。users ||= 'john';
语法错误。

37.sort()、assort()、和 ksort() 有什么分别?它们分别在什么情况下使用?
sort()
根据阵列中元素的值,以英文字母顺序排序,索引键会由 0 到 n-1 重新编号。主
要是当阵列索引键的值无关疼痒时用来把 阵列排序。
assort()
PHP 没有 assort() 函式,所以可能是 asort() 的笔误。
asort()
与 sort() 一样把阵列的元素按英文字母顺序来排列,不同的是所有索引键都获得保留,特别适合替联想阵列排序。
ksort()
根据阵列中索引键的值,以英文字母顺序排序,特别适合用于希望把索引键排序的联想阵列。

38.以下的代码会产生什么?为什么?
num =10; function multiply(){num =num *10; } multiply(); echonum;
由于函式 multiply() 没有指定 num 为全域变量(例如 globalnum 或者
_GLOBALS['num']),所以num 的值是 10。

39.些函式可以用来在现正执行的脚本中插入函式库?
对这道题目不同的理解会有不同的答案,我的第一个想法是插入 PHP 函式库不外乎
include()、include_once()、require ()、require_once(),但细心再想,“函式库”也应该包括 com 物件和 .net 函式库,所以我们的答案也要分别包括
com_load 和 dotnet_load,下次有人提起“函式库”的时候,别忘记这两个函式。

40.foo() 与 @foo() 有什么分别?
foo() 会执行这个函式,任何解译错误、语法错误、执行错误都会在页面上显示出来。
@foo() 在执行这个函式时,会隐藏所有上述的错误讯息。
很多应用程式都使用 @mysql_connect() 和 @mysql_query 来隐藏 mysql 的错误讯息,我认为这是很严重的失误,因为错误 不该被隐藏,你必须妥善处理它们,可能的话解决它们。

你可能感兴趣的:(PHP面试题21-40)