首页 >  面试题 > 网络营销-企业面试宝典 > 

高级PHP面试题(结构化的PHP开发人员面试过程)

高级PHP面试题(结构化的PHP开发人员面试过程)

作者:eld 来源:华育国际 时间:2015-05-27 访问次数:5226
指网站为了辨别用户身份而储存在用户本地终端(Client Side)上的数据(通常经过加密)。定义于RFC2109。是网景公司的前雇员Lou Montulli在1993年3月所发明。

1. 什么是Cookie? Cookied的用处是什么?
    指网站为了辨别用户身份而储存在用户本地终端(Client Side)上的数据(通常经过加密)。定义于RFC2109。是网景公司的前雇员Lou Montulli在1993年3月所发明。
    因为HTTP协议是无状态的,即服务器不知道用户上一次做了什么,这严重阻碍了交互式Web应用程序的实现。在典型的网上购物场景中,用户浏览了几个页面,买了一盒饼干和两瓶饮料。最后结帐时,由于HTTP的无状态性,不通过额外的手段,服务器并不知道用户到底买了什么。 所以Cookie就是用来绕开HTTP的无状态性的“额外手段”之一。服务器可以设置或读取Cookies中包含信息,借此维护用户跟服务器会话中的状态。
    在刚才的购物场景中,当用户选购了第一项商品,服务器在向用户发送网页的同时,还发送了一段Cookie,记录着那项商品的信息。当用户访问另一个页面,浏览器会把Cookie发送给服务器,于是服务器知道他之前选购了什么。用户继续选购饮料,服务器就在原来那段Cookie里追加新的商品信息。结帐时,服务器读取发送来的Cookie就行了。
    Cookie另一个典型的应用是当登录一个网站时,网站往往会请求用户输入用户名和密码,并且用户可以勾选“下次自动登录”。如果勾选了,那么下次访问同一网站时,用户会发现没输入用户名和密码就已经登录了。这正是因为前一次登录时,服务器发送了包含登录凭据(用户名加密码的某种加密形式)的Cookie到用户的硬盘上。第二次登录时,(如果该Cookie尚未到期)浏览器会发送该Cookie,服务器验证凭据,于是不必输入用户名和密码就让用户登录了。
2. 在开发过程中如果遇到技术问题或其他问题,你是如何进行解决的?
    1)理解和分析问题,找出问题的核心与关键所在
    2)对问题解决的具体方案提出假定和设想。先以假设的方式对问题进行推测、假定和设想问题的结论与问题解决的原则、途径、方法。
    3)检验假设是对假设进行验证的过程,它是问题解决的最后步骤。检验假设的方法有两种。一种是直接检验,即通过实验和实践活动来检验。
    4)总结问题,避免类似的问题再次出现
3. PHP中$message和$$message的区别是什么?
    举例:
    $cs = 'abc';
    $$cs = 'yes';
    那么echo $abc;将会输出yes;
    也就是说$$cs相当于$abc这个变量,当然,如果$cs的值变了,比如变成'cba',那么$abc也就不存在了,那个$$cs也就变成$cba了.
    第二.&相当于指针那样
    比如 $a = 'aaa';
    $b = &$a;
    $b = 'abc';
    现在echo $a;就会输出abc而不是aaa,因为$b变量指向$a变量的地址,你赋予$b变量值的同时也就相当于修改了$a的值.
4. 如何用命令行执行PHP?
    *让 PHP 运行指定文件。
    php my_script.php
    php -f  "my_script.php"
    以上两种方法(使用或不使用 -f 参数)都能够运行给定的 my_script.php 文件。您可以选择任何文件来运行,您指定的 PHP 脚本并非必须要以.php 为扩展名,它们可以有任意的文件名和扩展名。
    *在命令行直接运行 PHP 代码。
    php -r "print_r(get_defined_constants());"
    在使用这种方法时,请您注意外壳变量的替代及引号的使用。
    *通过标准输入(stdin)提供需要运行的 PHP 代码。
    以上用法给我们提供了非常强大的功能,使得我们可以如下范例所示,动态地生成 PHP 代码并通过命令行运行这些代码:
    $ some_application | some_filter | php | sort -u >final_output.txt
5. PHP如何进行数据加密和解密?
    1)PHP提供了crypt()函数完成加密功能:
    string crypt (string input_string [, string salt])
    这一函数完成被称作单向加密的功能,也就是说,它可以加密一些明码,但不能够将密码转换为原来的明码。单向加密的口令一旦落入第三方人的手里,由于不能被还原为明文,因此也没有什么大用处。在验证用户输入的口令时,用户的输入采用的也是单向算法,如果输入与存储的经加密后的口令相匹配,则输入的口令一定是正确的。
    2)PHP中通过MD5方式加密的函数有md5(),它的一个作用是混编。
    一个混编函数可以将一个可变长度的信息变换为具有固定长度被混编过的输出,也被称作”信息文摘”,这是十分有用的,因为 一个固定长度的字符串可以用来检查文件的完整性和验证数字签名与用户身份。PHP内置的md5()混编函数将把一个可变长度的信息转换为128位(32个字符)的信息文摘。混编的一个有趣的特点是:不能通过分析混编后的信息得到原来的明码,因为混编后的结果 与原来的明码内容没有依赖关系。即便只改变一个字符串中的一个字符,也将使得MD5混编算法计算出二个截然不同的结果。