php高级面试题的要点

php高级面试题的要点

除了做程序需要强大的理论支撑外,面试的时候,对于知识点的考察也会有所涉及。对于面试一些高级的php岗位来说,理论的考察会更加细化,在使用技巧和程序运行方面都会有所涉及,这和php初级面试题中只考察纯理论有很大的不同。下面我们就来看看一些php的高级试题吧。

1.sql语言分4大类请列举

1)DDL–CREATE,DROP,ALTER

2)DML–INSERT,UPDATE,DELETE

3)DQL-SELECT

4)DCL–GRANT,REVOKE,COMMIT,ROLLBACK

2.谈谈关于索引的一些技巧

1)要在区分度高的字段上建立索引,否则索引意义不大。

2)字符串建立索引要注意大小,索引长度过长,占用的空间也就越大,适当的可以截取进行索引,缺点是不能使用到覆盖索引,具体根据业务合理安排。

3)建立联合索引要知道最左前缀原则,举个例子( name, email, phone ),最终能走这个联合索引的一定只会是 ( name ),( name, email ),( name, email, phone ),其他只能走全表,需要根据业务合理设置联合索引的顺序。

3.PECL 和 PEAR 的区别

PECL (PHP Extension Community Library) 可以看作 PEAR (PHP Extension and Application Repository) 的一个组成部分,提供了与 PEAR 类似的功能。不同的是 PEAR 的所有扩展都是用纯粹的 PHP 代码编写的,用户在下载到 PEAR 扩展以后可以直接使用将扩展的代码包含到自己的 PHP 文件中使用。而 PECL 是使用 C 语言开发的,通常用于补充一些用 PHP 难以完成的底层功能,往往需要重新编译或者在配置文件中设置后才能在用户自己的代码中使用。

最直接的表述:PEAR 是 PHP 的上层扩展,PECL 是 PHP 的底层扩展。它们都是为特定的应用提供现成的函数或者类。

4.写一个函数,获取一篇文章内容中的全部图片,并下载

functiondownload_images($article_url='',$image_path='tmp'){

//获取文章类容
$content=file_get_contents($article_url);

//利用正则表达式得到图片链接
$reg_tag='/<img.*?\"([^\"]*(jpg|bmp|jpeg|gif|png)).*?>/';
$ret=preg_match_all($reg_tag,$content,$match_result);
$pic_url_array=array_unique($match_result1[1]);

//创建路径
$dir=getcwd().DIRECTORY_SEPARATOR.$image_path;
mkdir(iconv("UTF-8","GBK",$dir),0777,true);

foreach($pic_url_arrayas$pic_url){
//获取文件信息
$ch=curl_init($pic_url);
curl_setopt($ch,CURLOPT_HEADER,0);
curl_setopt($ch,CURLOPT_NOBODY,0);
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,FALSE);
curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,FALSE);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
$fileInfo=curl_exec($ch);
$httpinfo=curl_getinfo($ch);
curl_close($ch);

//获取图片文件后缀
$ext=strrchr($pic_url,'.');
$filename=$dir.'/'.uniqid().$ext;

//保存图片信息到文件
$local_file=fopen($filename,'w');
if(false!==$local_file){
if(false!==fwrite($local_file,$filecontent)){
fclose($local_file);
}
}
}

}