新浪2014校园招聘 PHP 开发工程师

PHP中的%

在PHP中,正数%正数为正数,正数%负数为正数,负数%正数为负数,Example:

1
2
3
echo 24 % 5;	// 输出 4
echo 24 % (-5); // 输出 4
echo -24 % 5; // 输出 -4

析构函数

在PHP5中,如果需要类 C 的实例销毁时自动完成默写逻辑,定义析构函数_­­__destruct

shell命令

top:用于实时显示进程的动态。

ps:用于显示当前进程的状态。

mv:用来为文件或目录改名、或将文件或目录移入其它位置。

find:用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则find命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。

df:用于显示目前在Linux系统上的文件系统的磁盘使用情况统计。

cat:用于连接文件并打印到标准输出设备上。

chmod:Linux/Unix 的文件调用权限分为三级 : 文件拥有者、群组、其他。利用 chmod 可以控制文件如何被他人所调用。其实就是修改读写文件权限。

chgrp:用于变更文件或目录的所属群组。

grep:用于查找文件里符合条件的字符串。

wc:用于计算字数。利用 wc 指令我们可以计算文件的Byte数、字数、或是列数,若不指定文件名称、或是所给予的文件名为”-“,则 wc 指令会从标准输入设备读取数据。

文本传输协议

FTP:文本传输协议。用于 Internet 上的控制文件的双向传输。TCP/IP 协议中,FTP 标准命令 TCP 端口号为21,Port 方式数据端口为20。FTP 的任务是从一台计算机将文件传送到另一台计算机,不受操作系统的限制。

SSH:安全外壳协议。专为远程登录会话和其他网络服务提供安全性的协议,利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。有基于口令的安全验证和基于秘钥的安全验证两种方式。默认运行端口是22。

HTTP:超文本传输协议。是客户端和服务器端请求和应答的标准。默认端口是80。

Telnet:是Internet远程登陆服务的标准协议和主要方式。为用户提供了在本地计算机上完成远程主机工作的能力,Telnet是常用的远程控制Web服务器的方法,默认端口是23。

HTTPS:以安全为目标的HTTP通道,简单讲是HTTP的安全版。HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。默认端口是443。

http与https的区别

超文本传输协议 HTTP 协议被用于在 Web 浏览器和网站服务器之间传递信息。HTTP 协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息,因此 HTTP 协议不适合传输一些敏感信息,比如信用卡号、密码等。

为了解决 HTTP 协议的这一缺陷,需要使用另一种协议:安全套接字层超文本传输协议HTTPS。为了数据传输的安全, HTTPS 在 HTTP 的基础上加入了 SSL 协议,SSL 依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密。

HTTPS和HTTP的区别主要为以下四点:

  1. https 协议需要到 ca 申请证书,一般免费证书很少,需要交费。
  2. http 是超文本传输协议,信息是明文传输,https 则是具有安全性的 SSL 加密传输协议。
  3. http 和 https 使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
  4. http 的连接很简单,是无状态的;HTTPS 协议是由 SSL+HTTP 协议构建的可进行加密传输、身份认证的网络协议,比http 协议安全。

SSH与Telnet的区别

  1. Telnet 是明文传送,SSH是加密的且支持压缩;
  2. SSH 服务一般都提供 sftp 支持,支持文件传送。telnet一般只能通过zmodem等协议传送文件;
  3. SSH 还可以借助 SSH 连接建立 TCP 通道,映射远端或本地的端口,以及转发X到本地X Server等;
  4. 在使用SSH 的时候,一个数字证书将认证客户端(你的工作站)和服务器(你的网络设备)之间的连接,并加密受保护的口令。SSH1 使用 RSA 加密密钥,SSH2 使用数字签名算法(DSA)密钥保护连接和认证。加密算法包括Blowfish,数据加密标准(DES),以及三重 DES(3DES)。SSH 保护并且有助于防止欺骗,“中间人”攻击,以及数据包监听。

单例设计模式

设计模式考察:请用单态设计模式方法设计类满足如下要求:请用PHP5代码编写类实现在每次对数据库连接的访问中都只能获取唯一的一个数据库连接,具体拦截数据库的详细代码忽略,请写出主要逻辑代码。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class Database{
static public $_instance;
private function __construct(){
// 连接数据库
}

static function getInstance(){
if (!self::$_instance) self::$_instance = new self();
return self::$_instance;
}

private function __clone() {
// 私有化clone方法
}

public function query($sql) {
// 查询
}
}

Session和Cookie的区别

  1. Cookie 数据存放在客户的浏览器上,需要客户端支持Cookie,Session 数据放在服务器上;
  2. Cookie 不是很安全,别人可以分析存放在本地的 Cookie 并进行 Cookie 欺骗,考虑到安全应当使用session;
  3. Session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能,考虑到减轻服务器性能方面,应当使用 Cookie ;
  4. 单个 Cookie 保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个Cookie;
  5. Session 中存储的是对象引用,Cookie 中存放的是字符串;
  6. Session 不能区分路径,同一个用户在访问一个网站期间,所有的Session 在任何一个地方都可以访问到。而Cookie 中如果设置了路径参数,那么同一个网站中不同路径下的Cookie 互相是访问不到的。

include和require的区别

  1. include() 在执行文件时每次都要进行读取和评估;require() 文件只处理一次(实际上文件内容替换了require()语句);
  2. require() 通常放在 PHP 脚本程序的最前面 include() 的使用和 require() 不一样,一般放在流程控制的处理区段中,PHP脚本文件读到 include() 语句时,才将它包含的文件读进来,这种方式,可以把程序执行时的流程简单化;
  3. require() 和 include() 语句是语言结构,不是真正的函数,可以像PHP的其他语言结构一样;
  4. require() 包含文件失败,停止执行,给出错误(致命的);
  5. include() 常用于动态包含,通常是自动加载的文件,即使加载出错,整个程序还是继续执行一个页面声明,另一个页面调用包函文件失败,继续向下执行,返回一条警告;
  6. include_once() 和 require_once() 语句也是在脚本执行期间包括并运行指定文件,与 include() require() 唯一的区别是如果文件中的代码已经被包括了,则不会再次包括。

PHP处理上传文件的流程

流程

首先用户在浏览器端选择上传的文件;
提交后,通过post方式上传到Apache服务器;
然后由 PHP 引擎处理判断文件是否能够上传到 PHP 配置文件中指定的临时目录;
之后获取文件后缀名判断文件是否是允许上传的文件格式;
如果没问题,则按照随机数+时间的方式生成文件的名字+后缀;
最后将文件从临时目录转移至Apache服务器目录。

限制上传文件大小

在 PHP 配置文件中 有一个 upload_max_filesize 设置其值的大小就可以限制上传文件大小;

在处理上传的 PHP 代码中限制,$_FILES[‘name’][‘size’]。