欢迎您来到,李雷博客 | PHP博客        登录  |  注册

来自一份腾讯PHP程序员的22道面试笔试题是如何解答的标准答案

更新:2020-03-07 09:22:42
人气:6669
来源:本站原创
A+

来自一份腾讯PHP程序员的22道面试笔试题是如何解答的标准答案

这是一份腾讯的 PHP 程序员面试笔试题试卷,主要有 22 题。

如果你最近在准备 PHP 面试,那么不妨来看看这套腾讯某部门的笔试题,可以尝试着自己去解答。我根据这些题目亲自整理了答案,可以参考我的答案在面试过程中进行解答。帮你更好的拿到 Offer。

本场 Chat 包含以下面试题:

1、表单中 get 与 post 提交方法的区别?如何判断页面提交方式是“post”还是“get”?

回答:

       (1)get提交表单中的内容在链接处是可见的。post不可见

       (2)post相比于get是安全的

  (3)post不收限制大小,get有限制大小

2、session 与 cookie 的区别?

回答:cookie与session的区别有:cookie以文本格式存储在浏览器上,存储量有限;而会话存储在服务端,可以无限量存储多个变量并且比cookie更安全

3、const 和 define 有何区别?

回答:

(1)const和#define都可以定义常量,但是const用途更广。

(2)const 常量有数据类型,而宏常量没有数据类型。编译器可以对前者进行类型安全检查。而对后者只进行字符替换,没有类型安全检查,并且在字符替换可能会产生意料不到的错误。

(3) 有些集成化的调试工具可以对const 常量进行调试,但是不能对宏常量进行调试。

4、对 PHP 使用类似“2015-06-04 22:21:21”的格式,打印出前一天时间。

回答:echo date("Y-m-d H:i:s", strtotime("-1 day"));

5、MySQL 取得当前时间的函数是?格式化日期的函数是?

回答:select now();  DATE_FORMAT

例如:

select date_format(日期字段,’%Y-%m-%d’) as ‘日期’ from test;

6、用 PHP 写出显示客户端 IP 与服务端 IP 的代码,如何获取多网卡内外网 IP?

回答:打印客户端IP:

echo $_SERVER[‘REMOTE_ADDR’];

或者:

getenv(‘REMOTE_ADDR’);

打印服务器IP:

echo gethostbyname(“www.baidu.com”)

7、语句 include 和 require 的区别是什么?为避免多次包含同一文件,可用(?)语句代替它们?

equire是无条件包含也就是如果一个流程里加入require,无论条件成立与否都会先执行 require

include有返回值,而require没有(可能因为如此require的速度比include快)

#注意:包含文件不存在或者语法错误的时候require是致命的,include不是 

1、PHP程序执行到require()时,只会读取一次档案,故常放在程序开头,档案引入后PHP会将网页档重新编译,让引入档成为原先网页的一部分。

2、PHP程序执行到include()时,每次皆会读取档案,故常用于流程控制的区段,如条件判断或循环中。

3、require() :无条件包含,如果文件不存在,会报出一个fatal error.脚本停止执行

4、include() : 有条件包含,如果文件不存在,会给出一个 warning,但脚本会继续执行

5、推荐使用require_once()和include_once(),可以检测文件是否有重复包含。

8、如何修改 SESSION 的生存时间?

1)方法 1:将 php.ini 中的 session.gc_maxlifetime 设置为 9999,然后重启 apache

2)方法 2:

$savePath = "./session_save_dir/";
$lifeTime = 小时 * 秒;
session_save_path($savePath);
session_set_cookie_params($lifeTime);
session_start();

3)方法 3:

setcookie() and session_set_cookie_params($lifeTime);

9、 在自定义的函数中如何读写全局变量。

正确引用方式如下:
<?php
    $one=100;
    $two=200;    //定义全局变量
    funcation demo(){
        global $one,$two;
        echo "运算结果:".($one+$two)."<br>";    //运算结果:300,使用到函数外部声明的全局变量
    }
    demo();
?>
 引用$GLOBAL超全局变量数组
<?php
    $one=100;
    $two=200;    //定义全局变量
    funcation demo(){
        echo "运算结果:".($GLOBAL['one']+$GLOBAL['$two'])."<br>";    //运算结果:300,使用到函数外部声明的全局变量
    }
    demo();
?>

10、 在 PHP 中,heredoc 是—种特殊的字符串,它的结束标志必须?

回答:结束标识符所在的行不能包含任何其它字符除了";"

11、 请说明 PHP 中传传值与传引用的区别。什么时候传值什么时候传引用?优缺点?

回答:按值传递:函数范围内对值的任何改变在函数外部都会被忽略。按引用传递:函数范围内对值的任何改变在函数外部也能反映出这些修改。优缺点:按值传递时,php必须复制值。特别是对于大型的字符串和对象来说,这将会是一个代价很大的操作。按引用传递则不需要复制值,对于性能提高很有好处。

12、 在 PHP 中 error_reporting 这个函数有什么作用?

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

语法
error_reporting(report_level)
<?php
    //禁用错误报告
    error_reporting(0);
    //报告运行时错误
    error_reporting(E_ERROR | E_WARNING | E_PARSE);
    //报告所有错误
    error_reporting(E_ALL);
?>

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

function check_tel_mail($str){ 

    $pattern="/^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$/";//电子邮件

    if (preg_match($pattern,$str)){ 
        $check_tel_mail_result='result_true';
    }else{ 
        $check_tel_mail_result='result_false';
    }
    return $check_tel_mail_result;
    //check_tel_mail($tel,1); 
}

14、 简述如何得到当前执行脚本路径,包括所得到参数。 

<?php
    echo "http://".$_SERVER['SERVER_NAME'].$_SERVER['PHP_SELF']."?".$_SERVER['QUERY_STRING'];
    //echo "http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
?>

15、 在 HTTP 1.0 中,状态码 302 的含义是?

回答:
100~101信息提示
200~206成功
300~305重定向
400~415客户端错误
500~505服务器错误
成功200
内部(服务器)错误为500
网页未找到显然是404

16、 JS 表单弹出对话框函数是?获得输入焦点函数是? 

弹出对话框: alert(),prompt(),confirm()
获得输入焦点 focus()

17、 JS 的转向函数是?怎么引入一个外部 JS 文件? 

window.location.href;
<script type="text/javascript" src="js/js_function.js"></script>

18、 foo() 和 @foo() 之间有什么区别? 

 1. @foo()控制错误输出,foo()正常表达
 2. @ 符号在 PHP 中可以忽略错误报告,对于表达式有提示类错误的,又不影响语句的执行的,可以在表达式前面加 @
 3. 可以把它放在变量、函数和 include() 调用、常量等等之前,不能把它放在函数或类的定义之前,也不能用于条件结构例如 if 和 foreach 等

19、 mysql_fetch_row 和 mysql_fetch_array 之间有什么区别? 

mysql_fetch_row -- 从结果集中取得一行作为枚举数组
mysql_fetch_array -- 从结果集中取得一行作为关联数组,或数字数组,或二者兼有,参二:数组类型,默认为两者皆有.

20、 简述 PHP 中自定义 class 的生命周期。 

21、 对于大流量的网站,您采用什么样的方法来解决访问量问题? 

01、|确认服务器硬件是否足够支持当前的流量
02、优化数据库访问 [缓存技术就是另一个解决方案,就是将动态数据存储到缓存文件中,动态网页直接调用这些文件,而不必再访问
数据库]
03、禁止外部的盗链。
04、优化前后端代码,不能有冗余代码;
05、控制打文件的下载
06、使用不同主机分流主要流量 [分布式]

22、 优化 MySQL 数据库的方法。

1、选取最适用的字段属性
2、使用连接(JOIN)来代替子查询(Sub-Queries)
3、使用联合(UNION)来代替手动创建的临时表
4、使用索引
5、优化查询语句

适合人群: PHP 实习程序员、PHP 初级程序员、PHP 中级程序员

推荐的文章
# 发表我的评论
  /     /  
# 最近评论
暂时还没有评论,要不要说点什么?
  Ads by Google
  联系博主
Hello,本博客系统采用PHP和MySql开发,程序开发完全是因为个人爱好,是自己纯手写PHP源代码,未采用任何PHP框架!
QQ:858353007   微信号:lileihot123
网站地图
会员服务
关于我们
QQ:858353007
 
广告服务
加我微信
移动端访问
 
 
Copyright © 2014- 2024 www.mdaima.com All Rights Reserved.
李雷博客,专注PHP经验、PHP教程及PHP源代码开源下载分享的PHP博客!   ICP备案号:京ICP备10202169号-4