来自一份腾讯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 中级程序员
- ● blob:http地址的原理及生成方法
- ● 华视CVR100系统身份证读卡器web驱动安装不识别解决办法
- ● web应用采用webcam实现拍照上传的PHP示例及参数说明
- ● PHP实现直播推流功能
- ● win10开机后屏幕黑屏只有鼠标但能启动任务管理器
- ● base64.js文件下载及使用方法说明
- ● windows利用bat微信双开、多开
- ● 百度API提交推送报{"error":401,"message":"tokenisnotvalid"}什么原因
- ● 如果在调用创建群接口时没有保存OpenConversationId,可以通过调用本接口通过chatId获取OpenConversationId
- ● Windows中使用BAT文件设置指定IP地址或自动获取IP
- ● MySQLSUM在没有符合查询条件时返回结果为空的处理办法
- ● 如何开启PHP8的JIT提升运行速度
- ● 钉钉API接口-用PHP+Curl实现获取用户信息
- ● 钉钉API接口-用PHP+Curl实现获取应用Access_Token
- ● 在PHP中使用CURL,“撩”服务器只需几行——phpcurl详细解析和常见大坑
- ● MySQLInnodb并发涉及参数说明
- ● mysql参数调优之innodb_thread_concurrency、innodb_concurrency_tickets合理的使用cpu性能
- ● PHP用fsockopen检测指定IP端口是否开启可用
- ● PHP用socket检测服务器IP端口是否开放?代码示例
- ● GatewayWorker报错:Waring:Events::onMessageisnotcallable