PHP面试题分享

今天给大家分享一份农成最近参加PHP工程师的面试题,可能是技术不到位,导致笔试题目做的不是很好,特意在这里留下个脚印,以防以后面试在碰到这样的题目还是不会做。

先给大家说一下PHP面试的基本流程:

一般大公司或者小公司都会有这样基本的流程:前台签到→领取PHP笔试的题目【笔试时间一般三十分钟】→技术组长面试【时间十分钟到三十分钟不等取决于你面试回答的问题】→技术总监或者部门主管面试【时间十多分钟主要核对一下你的能力不会太为难你】→HR面试【到这面你基本可以确定公司是要你了,只是面试下你的其他的能力主要的就是谈薪资】→上岗【最后一步】

农成去参加某个大的游戏公司面试,到了HR那面,一直等电话,等了好久哎, 一直没有回应,顿时好悲剧了。下面就把这个博雅互动的笔试题给大家分享下。

博雅互动PHP工程师笔试题A卷

1.echo count(“boyaa”);输出什么?

输出1   解释下:

count函数的定义和用法

count() 函数计算数组中的单元数目或对象中的属性个数。

对于数组,返回其元素的个数,对于其他值,返回 1。如果参数是变量而变量没有定义,则返回 0。如果 mode 被设置为 COUNT_RECURSIVE(或 1),则会递归底计算多维数组中的数组的元素个数。

2.isset(false)的返回值?==和===有什么区别?

true   ==在PHP中只是表示值相等,而===则表示要属性和值都必须相等条件才成立。

引申一下,这里其实就是考察我们的isset与empty的区别,isset就是判断一个变量是不是存在,是要看变量的属性和值的。而empty则只是判断一个变量的值是不是为空,属性是已经存在了的。

3.echo PHP_SAPI;可能会输出哪些值(答案不区分大小写)?

可能会输出: aolserverapacheapache2filterapache2handlercaudiumcgi (直到 PHP 5.3), cgi-fcgiclicli-servercontinuityembedfpm-fcgiisapilitespeedmilternsapiphttpdpi3webroxenthttpdtuxwebjames

PHP 常量 PHP_SAPI返回 web 服务器和 PHP 之间的接口类型,一般是用来测试PHP编译的服务器环境是什么。

一般常见的只有这三种:

nginx+fastcgi 输出结果为:cgi-fcgi

如果是apache 运行环境,输出结果为apache2handler

如果是命令行的形式执行,结果为cli 

4.strtotime(‘-1 day’) 与 strtotime(‘yesterday’)有什么区别?

这个题目属于比较偏门的,首先你要懂的PHP中时间戳的相互转换,strtotime是Linux下用的时间戳。

直接使用echo strtotime(‘yesterday’);或者是echo strtotime(‘-1 day’);是看的不是很明显的,但是如果你转换为时间格式就看的很明白了。

echo date("Y-m-d H:i:s",strtotime("-1 day")).'<br>';
echo date("Y-m-d H:i:s",strtotime("yesterday"));

输出的结果为:

2015-05-26 10:59:13
2015-05-26 00:00:00

这样我想大家就很明显了,就是年月是一样的具体的时间就不一样了。

具体的strtotime函数的用法可以看这篇文章。PHPstrtotime函数的用法

5.消息队列有哪些应用场景?

说实话这个东西我真的是没有接触过,因为工作的原因,消息队列什么的都还只是大学的时候的理论知识了,所以我这个题目并没有答出来。这里分享给大家如果大家觉得有更好的回答的答案欢迎大家指点一二。

6.php的public、protected、private三种访问控制模式有哪些区别?

这个题目就属于比较基础的题目了,农成在这里就不多说了。

public: 公有类型

在子类中可以通过 self::属性名(或方法名) 

调用public方法或属性,parent::方法名 调用父类方法在实例中可以能过 $obj->属性名(或方法名) 来调用 public类型的方法或属性

protected: 受保护类型

在子类中可以通过 self::属性名(或方法名) 调用protected方法或属性,parent::属性名(或方法名) 调用父类方法。

在实例中不能通过 $obj->属性名(或方法名) 来调用  protected类型的方法或属性

private: 私有类型 

该类型的属性或方法只能在该类中使用,

在该类的实例、子类中、子类的实例中都不能调用私有类型的属性和方法二、
self 和 parent 的区别
a).在子类中常用到这两个对像。他们的主要区别在于self可以调用父类中的公有或受保护的属性,但parent不可以调用

b).self:: 它表示当前类的静态成员(方法和属性) 与 $this 不同,$this是指当前对像

7.CDN是怎样实现加速访问的?

这个农成我其实也不是很清楚其中的原理,因为我的这个网站也只是用了百度的CDN加速的,具体的原理我也说不上来,我个人觉得就是通过资源来加速的。

CDN加速 – CDN概述

CDN的全称是Content Delivery Network,即内容分发网络。其目的是通过在现有的Internet中增加一层新的网络架构,将网站的内容发布到最接近用户的网络“边缘”,使用户可以就近取得所需的内容,提高用户访问网站的响应速度。CDN有别于镜像,因为它比镜像更智能,或者可以做这样一个比喻:CDN=更智能的镜像+缓存+流量导流。因而,CDN可以明显提高Internet网络中信息流动的效率。从技术上全面解决由于网络带宽小、用户访问量大、网点分布不均等问题,提高用户访问网站的响应速度。
为更好地理解CDN,让我们看一下CDN的工作流程。当用户访问已经加入CDN服务的网站时,首先通过DNS重定向技术确定最接近用户的最佳CDN节点,同时将用户的请求指向该节点。当用户的请求到达指定节点时,CDN的服务器(节点上的高速缓存)负责将用户请求的内容提供给用户。具体流程为: 用户在自己的浏览器中输入要访问的网站的域名,浏览器向本地DNS请求对该域名的解析,本地DNS将请求发到网站的主DNS,主DNS根据一系列的策略确定当时最适当的CDN节点,并将解析的结果(IP地址)发给用户,用户向给定的CDN节点请求相——应网站的内容。

CDN加速 – CDN加速原理

CDN加速将网站的内容缓存在网络边缘(离用户接入网络最近的地方),然后在用户访问网站内容的时候,通过调度系统将用户的请求路由或者引导到离用户接入网络最近或者访问效果最佳的缓存服务器上,有该缓存服务器为用户提供内容服务;相对于直接访问源站,这种方式缩短了用户和内容之间的网络距离,从而达到加速的效果。

8.Linux shell下(Bash),如何获取一个文本文件的最后100行?用纯PHP如何实现读取最后的100行?

 

9.某MYSQL库表中保存了每个用户的唯一ID,总记录数约为5千万,请设计保存他们之间好友关系的表结构(每个用户可以加多个其他用户为好友)。

10.在PHP开发中,如何过滤SQL注入?如何过滤XSS?

 

未经允许不得转载:微信信息发源地 » PHP面试题分享

赞 (3)
分享到:更多 ()

评论 0

评论前必须登录!

登陆 注册