热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

一些常见的PHP面试题目及解析

前言生活总是要往前看,等待了一天也没有阿里的面试通知,心情是相当灰暗,但是生活总要继续,还是要向前看,做几道PHP的面试题目,毕竟我的主要开发语言还是PHP题目1、一个包含中英文的字符串如何获得它的自

前言

生活总是要往前看,等待了一天也没有阿里的面试通知,心情是相当灰暗,但是生活总要继续,还是要向前看,做几道PHP的面试题目,毕竟我的主要开发语言还是PHP

题目

1、一个包含中英文的字符串如何获得它的自然长度
需要考虑汉字的字符编码,注意UTF-8中一个汉字占3个字节
/**
* 获取中英文混排的字符串的长度
*/

$str = "还没等到阿里的面试通知123456";

$nor_len = mb_strlen($str, "utf8");

echo $nor_len."
";

$len = strlen($str);

echo $len."
";


2、问一问什么是ORM,有时候会问这个词的英文全称是什么,问问ta对于ORM有什么个人的看法
对象关系映射(Object Relationl Mapping,简称ORM)是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术。简单的说,ORM是通过使用描述对象和数据库之间映射的元数据,将程序中的对象自动持久化到关系型数据库中。本质上是将数据从一种形式转换到另一种形式

3、问一问假如ta要自己去实现一个framework,ta会怎么设计
这里我直接谈一下自己对MVC的理解,我都是用原生php开发,没有用过框架


所以就算不用框架,自己代码里也可以做到mvc分层

4、问一问framework设计里的url dispatcher他会怎么考虑
还是MVC的问题,可以通过url进行设计:http://example.com////, 还可以通过nginx的rewrite进行跳转

5、如何访问会话变量(session)?
A.通过$_GET
B.通过$_POST
C.通过$_REQUEST
D.通过全局变量
E.以上都不对

E,解释:session变量只能通过$_SESSION数组获得

6、哪个函数能让服务器输出如下header?
set-COOKIE: foo=bar;

解答:setCOOKIE('foo', 'bar', time() + 3600);

7、在忽略浏览器bug的正常情况下,如何用一个与先前设置的域名(domain)不同的新域名来访问某个COOKIE?
A.通过HTTP_REMOTE_COOKIE访问
B.不可能
C.在调用setCOOKIE()时设置一个不同的域名
D.向浏览器发送额外的请求
E.使用Javascript,把COOKIE包含在URL中发送

B,解释:COOKIE不能跨域访问

8、在HTTPS下,URL和查询字串(query string)是如何从浏览器传到Web服务器上的?
A.这两个是明文传输,之后的信息加密传输
B.加密传输
C.URL明文传输,查询字串加密传输
D.URL加密传输,查询字串明文传输
E.为确保加密,查询字串将转换为header,夹在POST信息中传输

B,解释:ssl加密

9、当把一个有两个同名元素的表单提交给PHP脚本时会发生什么?
A.它们组成一个数组,存储在超级全局变量数组中
B.第二个元素的值加上第一个元素的值后,存储在超级全局变量数组中
C.第二个元素将覆盖第一个元素
D.第二个元素将自动被重命名
E.PHP输出一个警告

C
10、如何把数组存储在COOKIE里?
A.给COOKIE名添加一对方括号[]
B.使用implode函数
C.不可能,因为有容量限制
D.使用serialize函数
E.给COOKIE名添加ARRAY关键词

D,解释:序列化,serialize序列化数组即可,采用implode会丢失关联数组的key值

11、以下脚本输出什么?(E)
ob_start();
for ($i = 0; $i <10; $i++) {
echo $i;
}
$output = ob_get_contents();
ob_end_clean();
echo $output;
?>
A.12345678910
B.1234567890
C.0123456789
D.什么都没有
E.一个提示

C,解释:ob_start打开输出缓存,将输出字符保存在缓冲区里。通过ob_get_contents()获取输出的字符串

12、默认情况下,PHP把会话(session)数据存储在______里。
A.文件系统
B.数据库
C.虚拟内容
D.共享内存
E.以上都不是

A,解释:默认存在文件系统里,为了分布式,一般都放在Nosql数据库里,例如nginx+fastcgi+php5_fpm,修改fpm的php.ini session.save_path=tcp://redisip:redisport?auth=redispasswd

14、假设浏览器没有重启,那么在最后一次访问后的多久,会话(session)才会过期并被回收?
A.1440秒后
B.在session.gc_maxlifetime设置的时间过了后
C.除非手动删除,否则永不过期
D.除非浏览器重启,否则永不过期
E.以上都不对

B或者E,解释:虽然session有过期机制,默认session.gc_maxlifetime是1440秒,但是必须启动gc机制才行,gc机制的启动是有概率的,session分别使用session.gc_probability和session.gc_divisor来确定session的gc概率

15、哪个函数能把换行转换成HTML标签

nl2br

16、index.php脚本如何访问表单元素email的值?(双选)



A.$_GET[‘email’]
B.$_POST[‘email’]
C.$_SESSION[‘text’]
D.$_REQUEST[‘email’]
E.$_POST[‘text’]

BD,解释:提交方法为POST,所以只能从$_POST和$_REQUEST两个超级全局变量数组取得值

17、如果不给COOKIE设置过期时间会怎么样?
A.立刻过期
B.永不过期
C.COOKIE无法设置
D.在浏览器会话结束时过期
E.只在脚本没有产生服务器端session的情况下过期

D,解释:COOKIE跟session没有半毛钱关系,唯一的作用可以用COOKIE保存session的会话id
18、以下脚本将如何影响$s字符串?(双选)
$s = '

Hello

';
$ss = htmlentities ($s);
echo $s;
?>
A.尖括号<>会被转换成HTML标记,因此字符串将变长
B.没有变化
C.在浏览器上打印该字符串时,尖括号是可见的
D.在浏览器上打印该字符串时,尖括号及其内容将被识别为HTML标签,因此不可见
E.由于调用了htmlentities(),字符串会被销毁

BD,解释:htmlspecialchars转义$s后赋值给$ss,输出的是$ss









推荐阅读
  • 本文详细介绍了在PHP中如何获取和处理HTTP头部信息,包括通过cURL获取请求头信息、使用header函数发送响应头以及获取客户端HTTP头部的方法。同时,还探讨了PHP中$_SERVER变量的使用,以获取客户端和服务器的相关信息。 ... [详细]
  • 本文介绍了SIP(Session Initiation Protocol,会话发起协议)的基本概念、功能、消息格式及其实现机制。SIP是一种在IP网络上用于建立、管理和终止多媒体通信会话的应用层协议。 ... [详细]
  • 本文详细探讨了在Web开发中常见的UTF-8编码问题及其解决方案,包括HTML页面、PHP脚本、MySQL数据库以及JavaScript和Flash应用中的乱码问题。 ... [详细]
  • 本文详细记录了腾讯ABS云平台的一次前端开发岗位面试经历,包括面试过程中遇到的JavaScript相关问题、Vue.js等框架的深入探讨以及算法挑战等内容。 ... [详细]
  • Maven + Spring + MyBatis + MySQL 环境搭建与实例解析
    本文详细介绍如何使用MySQL数据库进行环境搭建,包括创建数据库表并插入示例数据。随后,逐步指导如何配置Maven项目,整合Spring框架与MyBatis,实现高效的数据访问。 ... [详细]
  • 本文详细介绍了在Windows系统中如何配置Nginx以实现高效的缓存加速功能,包括关键的配置文件设置和示例代码。 ... [详细]
  • Web动态服务器Python基本实现
    Web动态服务器Python基本实现 ... [详细]
  • HTML:  将文件拖拽到此区域 ... [详细]
  • 实践指南:使用Express、Create React App与MongoDB搭建React开发环境
    本文详细介绍了如何利用Express、Create React App和MongoDB构建一个高效的React应用开发环境,旨在为开发者提供一套完整的解决方案,包括环境搭建、数据模拟及前后端交互。 ... [详细]
  • 本文探讨了在使用JavaMail发送电子邮件时,抄送功能未能正常工作的问题,并提供了详细的代码示例和解决方法。 ... [详细]
  • 本文详细介绍如何在SSM(Spring + Spring MVC + MyBatis)框架中实现分页功能。包括分页的基本概念、数据准备、前端分页栏的设计与实现、后端分页逻辑的编写以及最终的测试步骤。 ... [详细]
  • 本文探讨了互联网服务提供商(ISP)如何可能篡改或插入用户请求的数据流,并提供了有效的技术手段来防止此类劫持行为,确保网络环境的安全与纯净。 ... [详细]
  • 本文探讨了Web应用(Web App)与原生应用(Native App)之间的主要差异,包括它们在开发、功能实现及版本管理等方面的不同特点,并分析了各自的优势与适用场景。 ... [详细]
  • 如何在PyCharm中配置Python脚本的默认模板
    本文介绍如何在PyCharm中设置Python脚本的默认模板,以便每次创建新的.py文件时自动填充预设内容,提高开发效率。 ... [详细]
  • 问题场景用Java进行web开发过程当中,当遇到很多很多个字段的实体时,最苦恼的莫过于编辑字段的查看和修改界面,发现2个页面存在很多重复信息,能不能写一遍?有没有轮子用都不如自己造。解决方式笔者根据自 ... [详细]
author-avatar
yovan
这个家伙很懒,什么也没留下!
Tags | 热门标签
RankList | 热门文章
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有