• 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 ", 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 ");

     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。

    目前就这些,还在面试中,会持续更新的。

    本文属原创内容,为了尊重他人劳动,转载请注明本文地址:

     http://www.cnblogs.com/luokakale/p/7445431.html

  • 相关阅读:
    多线程
    集合与文件操作
    Net基础复习
    form表单
    html的常用标签和属性
    C#泛型与linq
    2020 年度总结 & OI 生涯感想——当年酒狂自负
    TODO-List
    Attention Points
    THUWC2020 游记
  • 原文地址:https://www.cnblogs.com/luokakale/p/7445431.html
Copyright © 2020-2023  润新知