技术&日志

PHP-面试题收集

基础能力

什么是PHP

Hypertext Preprocessor—-超文本预处理器

Personal Home Page 原始名称

目标用途: 允许web开发人员快速编写动态生成的web页面,与其他页面相比,PHP是将程序嵌入到HTML文档中去执行,效率比完全生成HTML编辑的CGI高很多

HTML: Hypertext Markup Language

创始人: 拉姆斯勒·勒多夫Rasmus Lerdorf,1968年生,加拿大滑铁卢大学

勒多夫最开始是为了维护个人网页,用prel语言写了维护程序,之后又用c进行了重写,最终衍生出php/fi

单引号与双引号区别? (什么情况使用)

  • 双引号解释变量,单引号不解释变量
  • 双引号里插入单引号,其中单引号里如果有变量的话,变量解释
  • 双引号的变量名后面必须要有一个非数字、字母、下划线的特殊字符,或者用讲变量括起来,否则会将变量名后面的部分当做一个整体,引起语法错误
  • 双引号解释转义字符,单引号不解释转义字符,但是解释’\和\
  • 能使单引号字符尽量使用单引号,单引号的效率比双引号要高(因为双引号要先遍历一遍,判断里面有没有变量,然后再进行操作,而单引号则不需要判断)

POST和GET有什么区别?

  • get是把参数数据队列加到提交表单的action属性所指的url中,值和表单内各个字段一一对应,从url中可以看到;post是通过HTTPPOST机制,将表单内各个字段与其内容防止在HTML的head中一起传送到action属性所指的url地址,用户看不到这个过程
  • 对于get方式,服务器端用Request.QueryString获取变量的值,对于post方式,服务器端用Request.Form获取提交的数据
  • get传送的数据量较小,post传送的数据量较大,一般被默认不受限制,但在理论上,IIS4中最大量为80kb,IIS5中为1000k,get安全性非常低,post安全性较高

session与cookie的区别?

统计在线用户有哪几种方法? session cookie websocket

统计session数量,统计时间跨度取决于session生命期。

利用文件+cookie,循环遍历文件中cookie个数。 不过既然你有redis,也可以直接用redis 替代文件读写。
更多>>

echo、print_r、print、var_dump之间的区别

  • echo、print是php语句,var_dump和print_r是函数
  • echo 输出一个或多个字符串,中间以逗号隔开,没有返回值是语言结构而不是真正的函数,因此不能作为表达式的一部分使用
  • print也是php的一个关键字,有返回值 只能打印出简单类型变量的值(如int,string),如果字符串显示成功则返回true,否则返回false
  • print_r 可以打印出复杂类型变量的值(如数组、对象)以列表的形式显示,并以array、object开头,但print_r输出布尔值和NULL的结果没有意义,因为都是打印”\n”,因此var_dump()函数更适合调试
  • var_dump() 判断一个变量的类型和长度,并输出变量的数值

php中传值与传引用的区别?什么时候传值什么时候传引用? 怎么使用引用传值 ?

  • 变量默认总是传值赋值,那也就是说,当将一个表达式的值赋予一个变量时,整个表达式的值被赋值到目标变量,这意味着:当一个变量的赋予另外一个变量时,改变其中一个变量的值,将不会影响到另外一个变量
  • php也提供了另外一种方式给变量赋值:引用赋值。这意味着新的变量简单的引用(换言之,成为了其别名或者指向)了原始变量。改动的新的变量将影响到原始变量,反之亦然。使用引用赋值,简单地将一个&符号加到将要赋值的变量前(源变量)
  • 对象默认是传引用 对于较大是的数据,传引用比较好,这样可以节省内存的开销

语句include和require的区别是什么?为避免多次包含同一文件,可用什么语句代替它们?

可以用(?)语句代替他们

  • require是无条件包含,也就是如果一个流程里加入require,无论条件成立与否都会先执行require,当文件不存在或者无法打开的时候,会提示错误,并且会终止程序执行
  • include有返回值,而require没有(可能因为如此require的速度比include快),如果被包含的文件不存在的化,那么会提示一个错误,但是程序会继续执行下去
  • require_once表示了只包含一次,避免了重复包含. tip: 注意:包含文件不存在或者语法错误的时候require是致命的,而include不是

谈谈mvc的认识

由模型、视图、控制器完成的应用程序,由模型发出要实现的功能到控制器,控制器接收组织功能传递给视图

用PHP打印出前一天的时间格式是2018-1-1 10:21:21?

知道哪些算法? 在什么场景下用过?

http状态码 200 404 403 500 含义是什么?

  • 200 请求成功
  • 301 资源(网页等)被永久转义到其他URL
  • 404 请求的资源(网页等)不存在
  • 505 内部服务器错误 更多

css 选择器有哪些?

如何水平居中一个元素?

什么是闭包? 闭包有什么作用?

js 如果连接字符串?

倒计时、定时执行的函数分别是什么?

修改文件为当前用户为只读文件?

vi 跳转最后一行, 删除光标至下面3行, 搜索字符php?

nginx、php的端口分别是多少?

MYSQL取得当前时间的函数是?,格式化日期的函数是? 模糊搜索以php开头的字符?

mysql统计一个表的字段总和用什么方法? 以ID倒序 ? msyql char与varchar区别?

mysql 有几种关联查询?

MySQL数据库存储引擎有哪些?

tp生成URL方法? 如何获取渲染模板的输出内容而不是直接输出?

ThinkPHP框架中D函数与M函数的区别是什么?

如何理解TP中的单一入口文件?

TP中的URL模式有哪几种?默认是哪种?

综合能力

列出一些防范SQL注入、XSS攻击、CSRF攻击的方法?

设计接口的版本方法有几种? 每个接口的版本如果管理?

设计一个秒杀系统思路?

设计一个实时排行榜有哪些方法?

设计一个权限系统用户拥有组的权限, 权限控制到增改查删, 这个权限系统分几个表? 各表之间的关系?

微信公众号授权登录与PC网站授权登录的openid一样么? 如果同一个用户分别在这两个终端授权登录如何确定他是同一个用户?

扩展能力

说几个你知道的设计模式?

web开发方面会遇到哪些缓存? 分别如何优化?

php的内存回收机制是?

为什么要对数据库进行主从分离?

数据库中的事务是什么?

数据库设计经验,为什么进行分表? 分库?

一般多少数据量开始分表? 分库? 分库分表的目的? 什么是数据库垂直拆分? 水平拆分? 分区等等?可以举例说明

数据库优化有哪些? 分别需要注意什么?

  • 选取最适用的字段属性,尽可能减少定义字段宽度,尽量把字段设置NOTNULL,例如’省份’、’性别’最好适用ENUM
  • 使用连接(JOIN)来代替子查询
  • 适用联合(UNION)来代替手动创建的临时表
  • 事务处理
  • 锁定表、优化事务处理
  • 适用外键,优化锁定表
  • 建立索引
  • 优化查询语句 详细

对于大流量的网站,您采用什么样的方数据库中的事务是什么?法来解决访问量问题?

  • 确认服务器硬件是否能够支持当前的流量
  • 数据库读写分离,优化数据表
  • 程序功能规则,禁止外部的盗链
  • 控制大文件的下载
  • 使用不同主机分流主要流量

web不安全因素有哪些? 分别如何防范?

相关资料

2017最新PHP经典面试题目汇总
3年PHPer的面试总结
八年phper的高级工程师面试之路
PHP算法
mysql-数据库锁定机制
资料一
资料二
资料三

JAVA-阿里实习面试

发表评论