page contents

php面试必问的面试问题

1、CSS的定位有哪些方式?以及用法 position 在英文中表示“位置”的意思  它主要是用于实现对元素的定位 在CSS中定位分为三种: position:fixed          固定定位 position:relatvie     ...

attachments-2021-06-2N7eYEXB60cd6abb8f17e.png

1、CSS的定位有哪些方式?以及用法

position 在英文中表示“位置”的意思  它主要是用于实现对元素的定位

在CSS中定位分为三种:

position:fixed          固定定位

position:relatvie       相对定位

position:absolute       绝对定位

position:static       无特殊定位  (默认值)。

注意:

    在使用定位属性时,一定要配合定位的坐标来使用!

left:表示定位的元素离左边多远

right:表示定位的元素离右边多远

top:表示定位的元素离上边多远

bottom:表示定位的元素离下边多远

1固定定位

语法:

    position:fixed

固定定位,它是相对于浏览器窗口来进行定位。不管页面如何滚动,固定定位元素显示的位置不会改变!

特点:

固定定位元素它脱离了标准文档流

固定定位元素的的层级比标准文档流里面的元素要高 所以固定定位元素它会压盖住标准文档流里面的元素

固定定位元素它不再占用空间

固定定位元素它显示的位置不会随着浏览器滚动而滚动

2相对定位

语法:

    position:relative;

相对定位它是相对于“原来的自己”来进行定位!

特点:

相对定位元素它没有脱离标准文档流

相对定位元素如果没有设置定位的坐标,那么相对定位元素它还在原来的位置

相对定位元素设置了定位的坐标以后,那么它会在老家留下一个坑

相对定位元素它会将标准文档流中的元素压盖住。

相对定位元素的定位坐标值可以是负数

注意:

    相对定位元素它会在老家留下一个坑,所以一般情况下它很少单独使用,相对定位元素它主要是用来配合“绝对定位”元素来使用的。

3绝对定位

语法:

    position:absolute;

什么是绝对定位?

    绝对定位元素是相对于“祖先定位元素”来进行定位!

什么是祖先定位元素?

绝对定位元素它会先去查找其父元素是否设置了定位的属性

如果有设置定位的属性 那么它就会相对于其父元素来进行定位;

但是如果它的父元素没有设置定位属性 那么它就会去查找其父元素的上一级元素是否设置了定位的属性,

如果有设置就相对于其父元素的上一级元素进行定位

但是如果没有设置 那么会继续往向一级进行查找,

如果其祖先元素都没有设置定位属性,那么它会相对于“浏览器窗口”来进行定位!

①自己设置了绝对定位时:如果父元素没有设置定位属性,那么就相对于body进行定

②自己设置了绝对定位时:如果父元素也设置定位属性,那么就会相对于父元素进行定位

③自己设置了绝对定位时:如果父元素也设置定位属性,那么就会相对于父元素进行定位

2、用JQ发送AJAX请求时,$.ajax需要配置哪些参数??分别代表什么意义??

jQuery.ajax(options)

参数说明:

options :只有一个参数,要求是JSON格式的数据,其可以设置如下属性:

async :是否异步,true代表异步,false代表同步。默认为true

cache :是否缓存,true代表缓存,false代表不缓存,默认为true

complete :当Ajax状态码为4时所触发的回调函数

contentType :请求头,如果是POST请求,此参数为application/x-www-form-urlencoded

data : 发送Ajax请求时所传递的参数,要求是一个字符串

dataType :期待的返回值类型,可以是text/xml/json数据类型

success :当Ajax状态码为4且响应状态码为200时所触发的回调函数

type :发送的http请求,可以是get,也可以是post

url :请求的url地址

3、什么时候用同步请求??什么时候用异步请求??

一.什么是同步请求:(false)

同步请求即是当前发出请求后,浏览器什么都不能做,必须得等到请求完成返回数据之后,才会执行后续的代码,相当于是排队,前一个人办理完自己的事务,下一个人才能接着办。也就是说,当JS代码加载到当前AJAX的时候会把页面里所有的代码停止加载,页面处于一个假死状态,当这个AJAX执行完毕后才会继续运行其他代码页面解除假死状态(即当ajax返回数据后,才执行后面的function2)。 

二.什么是异步请求:(true)

    异步请求就当发出请求的同时,浏览器可以继续做任何事,Ajax发送请求并不会影响页面的加载与用户的操作,相当于是在两条线上,各走各的,互不影响。

一般默认值为true,异步。异步请求可以完全不影响用户的体验效果,无论请求的时间长或者短,用户都在专心的操作页面的其他内容,并不会有等待的感觉。

4、PHP有哪些魔术方法??

魔术方法包括:

__construct(),类的构造函数

__destruct(),类的析构函数

__call(),在对象中调用一个不可访问方法时调用

__callStatic(),用静态方式中调用一个不可访问方法时调用

__get(),获得一个类的成员变量时调用

__set(),设置一个类的成员变量时调用

__isset(),当对不可访问属性调用isset()或empty()时调用

__unset(),当对不可访问属性调用unset()时被调用。

__sleep(),执行serialize()时,先会调用这个函数

__wakeup(),执行unserialize()时,先会调用这个函数

__toString(),类被当成字符串时的回应方法

__invoke(),调用函数的方式调用一个对象时的回应方法

__set_state(),调用var_export()导出类时,此静态方法会被调用。

__clone(),当对象复制完成时调用

__autoload(),尝试加载未定义的类

__debugInfo(),打印所需调试信息

5、简述get方法和post方法

① 传参方式不同

get请求是在url的尾部传递参数的

post请求是在请求空白行的位置传递参数的

② 传参的大小不同

get请求,其传参的最大值为2kb

post请求理论上是没有任何限制的,但是实际应用中,受到php.ini文件的影响,一般为2M

③ 传参的类型不同

get请求,只能传递字符串

post请求,不仅可以传递字符串还可以传递二进制数据

④ 安全性不同

相对而言,post请求的安全性要略高于get请求

 其请求头参数不同

6、PHP中的单词函数

I接收函数

M:实例化基础模型类

D:实例化自定义模型类

U:对URL地址进行组装

7、抽象类和接口又什么区别??

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

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

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

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

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

共同点:做规范用

抽象类:不能被实例化,只能被继承;通过关键字abstract声明;抽象类中至少要包

含一个抽象方法,该抽象方法没有方法体,天生要被子类重写;

接口:通过interface声明;接口中的成员常量和方法都是 public 的,方法可以不写关键字 public;接口能实现多继承;

抽象类是一种不能被实例化的类,只能作为其他类的父类来使用。抽象类是通过关键字

abstract 来声明的。

抽象类与普通类相似,都包含成员变量和成员方法,两者的区别在于,抽象类中至少要 包含一个抽象方法,

抽象方法没有方法体,该方法天生就是要被子类重写的。 抽象方法的格式为:abstract function abstractMethod();

接口是通过 interface 关键字来声明的,接口中的成员常量和方法都是 public 的,方法可 以不写关键字 public,

接口中的方法也是没有方法体。接口中的方法也天生就是要被子类实现的。 抽象类和接口实现的功能十分相似,最大的不同是接口能实现多继承。在应用中选择抽

象类还是接口要看具体实现。

子类继承抽象类使用 extends,子类实现接口使用implements。

8、如何理解命名空间??

防止类和函数方法冲突

命名空间可以解决下面两个问题:

(1)用户编写的代码与PHP内部的类/函数/常量或第三方类/函数/常量之间的名字冲突。

(2)为很长的标识符创建一个别名,提高代码的可读性,减少代码的编写量。

9、PHP哪个版本开始支持命名空间??

ThinkPHP3.2

PHP 在 5.3.0 以后的版本开始支持命名空间。

10、PHP拥有那些扩展??

PDO: PHP访问数据库定义的一个轻量级的一致接口。

CURL扩展

GD扩展

Memcache

Mysql 

11、SVN出现冲突怎么办??

SVN作用:协同开发。

融合:

更新:

12、如何理解MVC??

MVC是一个框架模式,它强制性的使应用程序的输入、处理和输出分开。使用MVC应用程序被分成三个核心部件:模型、视图、控制器。它们各自处理自己的任务。

MVC所指的就是在软件设计中一种编程模式。在该模式下会将业务操作、数据显示、数据交互会进行一个拆分操作

M:代表就是具体的模型(model) 主要作用就是与数据库进行数据交互

V:代表就是具体的视图(view)主要作用就是与用户进行数据交互

C:代表就是具体的控制器(controller)主要作用就是处理具体的业务逻辑

由模型(model),视图(view),控制器(controller)完成的应用程序,model 层负责提供数据,和数据库有关的操作都交给模型层来处理,view 层则提供交互的界面,并输出数据,而 controller 层则负责接收请求,并分发给相应的 model 来处理,然后调用 view 层来显示。

13、商品表里有哪些字段??

商品id,商品名称,商品货号,商品分类id,市场售价,本店售价,商品缩略图,商品缩略小图,是否热卖 1表示热卖 0表示不是,是否推荐 1表示推荐 0表示不推荐,是否热卖 1表示新品 0表示不是,添加时间,表示商品是否删除 1正常 0删除状态,商品是否销售 1销售 0下架状态,

14、相同商品ID的属性不同,怎么办??

商品表中的属性存成一个集合,属性表

15、cookie跟session

对比一下两者,有以下几点不同:

1.作用位置:cookie是在客户端保存用户信息,session实在服务器端保存用户信息;

2.保存内容:cookie保存的是字符串,session中保存的是对象;

3.作用时间:cookie可以长期保存在客户端,session随会话结束而关闭;

4.一般cookie保存不重要的用户信息,重要的信息由session保存。

5、cookie分为两种:会话cookie和文件Cookie。会话cookie当浏览器关闭时,数据消失,文件Cookie是将数据存储在一个文件中,设置过期时间,关闭浏览器后,若没到过期时间,再次打开浏览器,数据还存在。

16、购物车的实现原理

分两种情况:

1、用户没有登录,将数据存储在cookie中,若用户登录,再将cookie中的数据转存到数据库。

2、用户登录后,将数据直接存储到数据库。

17、RBAC权限管理

基于角色的权限访问控制(Role-Based Access Control)

五张表:两个中间表 admin、role、rule、admin_role、role_rule

三张表:一个中间表

通过代码控制不同的管理员是否能够访问某个方法的过程就是权限控制。

RBAC(Role-Based AccessControl,基于角色的访问控制),就是用户通过角色与权限进行关联。简单地说,一个用户拥有若干角色,每一个角色拥有若干权限。这样,就构造成“用户-角色-权限”的授权模型。在这种模型中,用户与角色之间,角色与权限之间,一般者是多对多的关系。

18、短信验证码如何防止短信轰炸??

JS客户端验证验证

手机号限制短信条数(计数器)

(一)增加图形验证

恶意攻击者采用自动化工具,调用“动态短信获取”接口进行动态短信发送,原因主要是攻击者可以自动对接口进行大量调用。

采用图片验证码可有效防止工具自动化调用,即当用户进行“获取动态短信” 操作前,弹出图片验证码,要求用户输入验证码后,服务器端再发送动态短信到用户手机上,该方法可有效解决短信轰炸问题。

安全的图形验证码必须满足如下防护要求

- 生成过程安全:图片验证码必须在服务器端进行产生与校验;

- 使用过程安全:单次有效,且以用户的验证请求为准;

- 验证码自身安全:不易被识别工具识别,能有效防止暴力破解。

图形验证的示例:

(二)单IP请求次数限制

使用了图片验证码后,能防止攻击者有效进行“动态短信”功能的自动化调用;

但若攻击者忽略图片验证码验证错误的情况,大量执行请求会给服务器带来额外负担,影响业务使用。建议在服务器端限制单个 IP 在单位时间内的请求次数,一旦用户请求次数(包括失败请求次数)超出设定的阈值,则暂停对该 IP 一段时间的请求;若情节特别严重,可以将 IP 加入黑名单,禁止该 IP 的访问请 求。该措施能限制一个 IP 地址的大量请求,避免攻击者通过同一个 IP 对大量用户进行攻击,增加了攻击难度,保障了业务的正常开展。

(三)限制发送时长

建议采用限制重复发送动态短信的间隔时长, 即当单个用户请求发送一次动态短信之后,服务器端限制只有在一定时长之后(此处一般为60秒),才能进行第二次动态短信请求。该功能可进一步保障用户体验,并避免包含手工攻击恶 意发送垃圾验证短信。

更多相关技术内容咨询欢迎前往并持续关注六星社区了解详情。

程序员编程交流QQ群:805358732

如果你想用Python开辟副业赚钱,但不熟悉爬虫与反爬虫技术,没有接单途径,也缺乏兼职经验
关注下方微信公众号:Python编程学习圈,获取价值999元全套Python入门到进阶的学习资料以及教程,还有Python技术交流群一起交流学习哦。

attachments-2022-06-N5a7Gu3f62ac40c740782.jpeg

0 条评论

请先 登录 后评论
轩辕小不懂
轩辕小不懂

2403 篇文章

作家榜 »

  1. 轩辕小不懂 2403 文章
  2. 小柒 1324 文章
  3. Pack 1135 文章
  4. Nen 576 文章
  5. 王昭君 209 文章
  6. 文双 71 文章
  7. 小威 64 文章
  8. Cara 36 文章