php面试笔记

面试岗位:web开发工程师
时间: 2016-04-22

面试总结: 前端和后端数据库部分掌握不足

1、get和post区别以及另外的两个

1). get是从服务器上获取数据,post是向服务器传送数据。
2). get是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,在URL中可以看到。post是通过HTTP post机制,将表单内各个字段与其内容放置在HTML HEADER内一起传送到ACTION属性所指的URL地址。用户看不到这个过程。
3). 对于get方式,服务器端用Request.QueryString获取变量的值,对于post方式,服务器端用Request.Form获取提交的数据。
4). get传送的数据量较小,不能大于2KB。post传送的数据量较大,一般被默认为不受限制。但理论上,IIS4中最大量为80KB,IIS5中为100KB。
5). get安全性非常低,post安全性较高。但是执行效率却比Post方法好。

建议:
1)、get方式的安全性较Post方式要差些,包含机密信息的话,建议用Post数据提交方式;
2)、在做数据查询时,建议用Get方式;而在做数据添加、修改或删除时,建议用Post方式;
2、cookie和session的区别和联系

2、cookie 和session 的区别:
1)cookie数据存放在客户的浏览器上,session数据放在服务器上。
2)cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗
考虑到安全应当使用session。
3)session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能
考虑到减轻服务器性能方面,应当使用COOKIE。
4)单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。

cookie 和session 的联系:
session是通过cookie来工作的
session和cookie之间是通过$_COOKIE[‘PHPSESSID’]来联系的,通过$_COOKIE[‘PHPSESSID’]可以知道session的id,从而获取到其他的信息。
在购物网站中通常将用户加入购物车的商品联通session_id记录到数据库中,当用户再次访问是,通过sessionid就可以查找到用户上次加入购物车的商品。因为sessionid是唯一的,记录到数据库中就可以根据这个查找了。

3、魔术方法:call()、tostring()

call()函数是php类的默认魔法函数,call() 在一个对象的上下文中,如果调用的方法不存在的时候,它将被触发

__toString() 方法用于一个类被当成字符串时应怎样回应。例如 echo $obj; 应该显示些什么。此方法必须返回一个字符串,否则将发出一条 E_RECOVERABLE_ERROR 级别的致命错误

4、css中的position属性,如何让几个div并排显示,overflow属性

css的position属性文档说明

position 最主要的两个属性:属性 absolute(绝对定位) relative(相对定位)

用float属性让div并排显示

overflow属性是指当区域中的内容超出边界时如何展示

5、数据库中的存储引擎

6、svn和git

svn和git的区别:

1)git是分布式的,没有网络时也可以提交;

2)git把内容按元数据方式存储,而SVN是按文件;

7、向数据库中插入一个字段

ALTER TABLE [表名] ADD COLUMN [字段名] DATATYPE

8、设计模式

9、array_walk()用法

对数组中每个元素应用用户自定义函数

见文档

10、abstruct类与接口的区别

区别:

1、对接口的使用是通过关键字implements。对抽象类的使用是通过关键字extends。当然接口也可以通过关键字extends继承。

2、接口中不可以声明成员变量(包括类静态变量),但是可以声明类常量。抽象类中可以声明各种类型成员变量,实现数据的封装。(另Java接口中的成员变量都要声明为public static final类型)

3、接口没有构造函数,抽象类可以有构造函数。

4、接口中的方法默认都是public类型的,而抽象类中的方法可以使用private,protected,public来修饰。

5、一个类可以同时实现多个接口,但一个类只能继承于一个抽象类。

选择抽象类还是接口。

如果要创建一个模型,这个模型将由一些紧密相关的对象采用,就可以使用抽象类。如果要创建将由一些不相关对象采用的功能,就使用接口。
如果必须从多个来源继承行为,就使用接口。
如果知道所有类都会共享一个公共的行为实现,就使用抽象类,并在其中实现该行为。
11、REST接口调用方法

12、面向对象中的多态性

所谓多态性是指一段程序能够处理多种类型
对象的能力,比如说在公司上班,每个月财务发放工资,同一个发工资的方法,在公司内不
同的员工或是不同职位的员工,都是通过这个方法发放的,但是所发的工资都是不相同的。
所以同一个发工资的方法就出现了多种形态。对于面向对象的程序来说,多态就是把子类对
象赋值给父类引用,然后调用父类的方法,去执行子类覆盖父类的那个方法,但在PHP 里是
弱类型的,对象引用都是一样的不分父类引用,还是子类引用。

13、php新版本的改动

php7新特性 官方说明文档

1)返回值类型,严格模式

2)??运算符\<=>组合比较符,当$a小于、等于或大于$b时它分别返回-1、0或1

3)use批量引入

14、MVC模型及常用的框架

回答:MVC由Model(模型), View(视图)和Controller(控制器)组成,PHP MVC可以更高效地管理好3个不同层的PHP代码。

Model:数据信息存取层。

View:view层负责将应用的数据以特定的方式展现在界面上。

Controller:通常控制器负责从视图读取数据,控制用户输入,并向模型发送数据。