第二十七套

1.mysql_fetch_row()和mysql_fetch_array()的区别是什么?

mysql_fetch_array() 是 mysql_fetch_row() 的扩展版本。
除了将数据以数字索引方式储存在数组中之外,还可以将数据作为关联索引储存,用字段名作为键名。

2.GD库是做什么的?

gd库是php处理图形的扩展库,gd库提供了一系列用来处理图片的API,
使用GD库可以处理图片,或者生成图片。
在网站上GD库通常用来生成缩略图或者用来对图片加水印或者对网站数据生成报表。

3.请写一个获取文件扩展名的函数

方法一

$file = basename($str);
$pos1 = strpos($file,'.');
$pos2 = strpos($file,'?');
echo substr($file,$pos1,$pos2-$pos1);

方法二

$arr = parse_url($str);
$file = $arr['path'];
$file = explode('.',$file);
echo $file[1];

4.是叙述isset()和empty()的区别

Isset判断一个变量是否被定义.False:null的三种情况
Empty判断一个变量是否为空.True:null的三种情况,false的八种情况

5.include require include_once require_once的区别是什么?

(1)include()在执行文件时每次都要进行读取和评估;require()文件只处理一次(实际上文件内容替换了require()语句)
(2)require()通常放在PHP脚本程序的最前面include()的使用和require()一样,一般放在流程控制的处理区段中,PHP脚本文件读到include()语句时,才将它包含的文件读进来,这种方式,可以把程序执行时的流程简单化
(3)require()和include()语句是语言结构,不是真正的函数,可以像PHP的其他语言结构一样.
(4)include_once()和require_once()语句也是在脚本执行期间包括并运行指定文件,与include()require()唯一的区别是如果文件中的代码已经被包括了,则不会再次包括.
(5)require()包含文件失败,停止执行,给出错误(致命的);
(6)include()常用于动态包含.通常是自动加载的文件,即使加载出错,整个程序还是继续执行一个页面声明,另一个页面调用包函文件失败,继续向下执行,返回一条警告

6.print和echo的区别是什么?

echo是PHP语句, print和print_r是函数,语句没有返回值,函数可以有返回值(即便没有用)

Print()只能打印出简单类型变量的值(如int,string)
echo 输出一个或者多个字符串

7.php有几种数据类型?分别是什么?

八种
整型,浮点型,字符串,布尔型,数组,对象,资源,NULL

8.mysql数据库中的字段类型varchar 和 char主要区别是什么?那种字段查找效率高,为什么?

(1) char是固定长度,分配多少,就占多长。
(2) Varchar是可变长度,内容有多大就占多大,节省空间。
(3) 因varchar是可变的,所以在数据长度改变时,服务器要进行额外操作,所以效率比char类型低。

9.mysql的存储引擎myisam和innodb的区别?

(1)MyISAM
优:成熟、稳定、易于管理;表格锁定机制;比innoDB快;
缺:optimize清理空间;
适合:读取需求、节约空间时间、响应速度快;
(2)InnoDB
优:数据库支持外键和事务处理,
缺:速度比MyISAM稍慢;占用空间大;
适合:用到事务、外键和更高安全性的需求;多用户同时修改表;
(3)创建索引:alert table tablename add index (字段名)

10.在php中error_reporting这个函数有什么用?

error_reporting() 设置 PHP 的报错级别并返回当前级别。

语法
error_reporting(report_level)

 

11.请写一个验证电子邮件格式是否正确的函数?

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); 
}

12.了解MVC模式吗?请写出三种以上目前流行的php中mvc框架名称

(1)mvc即 模型model,视图view,控制器controller;是一种模型,是一种编程思想,就是把一个应用的输入、输出、数据处理分开,分解耦合
(2)A..视图,数据采集和处理,和用户请求,不包括业务流程,smarty实现B.模型,接收数据和请求,完成相关数据处理,返回数据,’黑箱‘操作,核心,php类库实现C.控制器,任务的实现,根据传入数据调用各种组件完成任务,将结果传给视图显示,业务流程的实现。
(3)mvc的优点:使开发人员只关注某一层,很容易用新代替旧层次的实现,低依赖性,重用性,标准化,扩展性.维护性
CI,YII,ThinkPHP

13.AJAX用过吗?说说原理

ajax是很多种技术的集合体。其中包括:
1.浏览器的xmlHTTPRequest对象,他是负责为你开通另一条连接通道,可以传递信息。
2.javascript:他是负责调用XMLHTTPRequest对象进行与后台交互的媒介。
3.xml是一种数据格式,用于服务器应答传递信息的格式。除了xml外,还可以使用任何的文本格式,包括text,html,json等。
说白了ajax就是把以上三种技术综合在一起而已。

14.请说明php中传值和传引用的区别?什么时候传值什么时候传引用?

传值:函数内对传送变量修改不影响被传变量的值(用传送值对函数的内的变量重新赋值)
引用:传送变量的引用,函数内的任何操作等同于对传送变量的操作,传送大型变量时效率高!

15.php程序会有什么漏洞?

命令注入攻击
客户端脚本植入
XSS跨站脚本攻击
Sql注入攻击
跨站请求伪造
SESSION劫持
HTTP响应拆分
文件上传漏洞

16.如何实现php和jsp之间的交互?

 SOAP,XML_RPC,Socket function,CURL都可以实现这些

17.请写一个遍历指定目录下所有子目录和子文件的函数?

function my_scandir($dir){
    $files = array();
    if ($handle = opendir($dir) ){
        while ( ($file = readdir($handle)) !== false ) {
            if ( $file != ".." && $file != "." ) {
                if ( is_dir($dir . "/" . $file) ) {
                    $files[$file] = scandir($dir . "/" . $file);
                }else {
                    $files[] = $file;
                }
            }
        }
        closedir($handle);
        return $files;
    }
}

18.mysql数据库的基本优化法则是什么?

(1)系统服务优化,把MySQL的key_buffer、cache_buffer、query_cache等增加容量
(2)给所有经常查询的字段增加适当的索引
(3)优化SQL语句,减少Ditinct、Group、Join等等语句的操作

19.如何修改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);

20.打开php.ini中的safe_mode,会影响哪些函数?至少说出6个

system,passthru,exec,shell_exec,popen,phpinfo
因为Safe_mode是php非常重要的内嵌的安全机制。默认是关闭的

21.一群猴子围成一圈,按1,2,3,4,….n一次编号。

然后从第1值开始数,数到第m只,把它踢出圈,从它后面再开始数,再数到第m只,再踢它出去…,如此不停进行下去,知道最后剩下一只猴子为止,那只猴子就叫做大王。要求编程模拟此过程,输入m、n输出最后那个大王编号。

function king($n,$m) {
    //模拟建立一个连续数组
    $monkeys = array();
    for($j=1 ;$j<$n+1 ;$j++){
           $monkeys[$j] = $j ;
        }
    $i = 0;
    while (count($monkeys)>1) {
        $i++;
        $head = array_shift($monkeys);
        if($i%$m!=0){
            array_push($monkeys,$head);
        }   
    }
    return $monkeys[0];
}
echo king(10,1);

你可能感兴趣的:(PHP-面试题总集)