php2017面试题

2017-07-25  本文已影响0人  LeftJoin

1.写出创建多级目录的函数(新浪校招)

function  mkdirs($dir,$chmod)

{

if(is_dir($dir)){

return "目录已存在";

}

if(mkdir($dir,$chmod,true)){

return "成功";

}

return "失败";

}

echo mkdirs('./aa/bb/cc',777);

2.函数内部 static 和 global 关键字的作用、

$b =1;

function foo()

{

static $a = 1;

global $b;

$b = $b++;

return $a++;

}

echo $b;

echo foo();

echo foo();

3.子类重写父类的 protected 方法有什么限制?或者说有什么要遵守的规则?

php 继承 子类的权限只能放大

4.谈一谈 PHP 开源框架 CI,ThinkPHP,Laravel 的优缺点及选型依据

问这个题目的面试官都是脑残

5.Memcache 和 Redis 的读写性能(qps)如何?两者优缺点?Redis 支持哪些数据类型?Redis 如何持久化?

6.使用 PHP 下载网络图片,有哪些方法?

1.file_get_contents($file_url);

2.使用CURL

3..使用fopen

 7。什么是 CGI?什么是 FastCGI?php-fpm,FastCGI,Nginx 之间是什么关系?

CGI是HTTP Server和一个独立的进程之间的协议,把HTTP Request的Header设置成进程的环境变量,HTTP Request的正文设置成进程的标准输入,而进程的标准输出就是HTTP Response包括Header和正文。

FASTCGI是和HTTP协议类似的概念。无非就是规定了在同一个TCP连接里怎么同时传多个HTTP连接。这实际上导致了个问题,有个HTTP连接传个大文件不肯让出FASTCGI连接,在同一个FASTCGI连接里的其他HTTP连接就傻了。所以Lighttpd? 引入了 X-SENDFILE

php-fpm就相当于是Apache+mod_php。无非php-fpm自带了FASTCGI Server,而Apache是HTTP Server。

8.什么是 CSRF 攻击 ?XSS 攻击?如何防范?

XSS(跨站脚本攻击)和CSRF(跨站请求伪造)

CSRF

1、使用token进行验证。可以在 HTTP 请求中以参数的形式加入一个随机产生的 token,并在服务器端建立一个拦截器来验证这个 token,如果请求中没有 token 或者 token 内容不正确,则认为可能是 CSRF 攻击而拒绝该请求。(使用GET或POST方法加TOKEN)

2、验证HTTP Referer字段。HTTP Referer字段,记录该HTTP请求的来源。如果来源是外部,那么就拒绝这个请求。(这个方法不安全,可以篡改HTTP Referer字段)

3、一般框架,像ThinkPHP、laravel有表单令牌可以做防范。

XSS

最简单的办法,过滤输入。对用户的输入,可以使用htmlspecialchars()等函数进行过滤转义,当然,一些文件上传等,也可能会造成此攻击,要限制上传文件的类型,比如只能传图片等。

9.列举常用的设计模式并说明?单例模式,观察者模式等等

单例 常见的就是数据库操作类~ 观察者 一般应用于一对多处理吧  

观察者  定义两个接口 一个观察者 一个被观察者  被观察者 定义一个方法接收多个 观察者的对象循环调用同名方法 

代理模式 就是在另一个构造 方法里面 new 另一个对象

10.

上一篇下一篇

猜你喜欢

热点阅读