# 常见经典面试题
- 什么是引用变量?在PHP中用什么符号定义引用变量。
- 要求写出jQuery中,可以处理Ajax的几种方法。
- PHP中字符串可以使用哪三种定义方法以及各自的区别是什么?
- 用PHP写出显示客户端IP与服务器IP的代码。
- `__FILE__`表示什么意思?
- foo()和@foo()之间的区别。
- 请列出3种PHP数组循环操作的语法,并注明各种循环的区别。
- PHP中如何优化多个if...else语句的情况?
- 将可能性较大的条件尽可能往前挪;
- 如果条件表达式的结果为:字符串、浮点数或整型,则可以使用switch...case。
- 至少写出一种验证139开头的11位手机号码的正则表达式
- 不断在文件hello.txt头部写入一行"hello world"字符串,要求代码完整。
- 简述cookie和session的区别及各自的工作机制,存储位置等,简述cookie的优缺点。
- 为什么要使用会话控制技术?
- 请写出PHP类权限控制修饰符
- HTTP/1.1中,状态码200, 301, 304, 403, 404, 500的含义。
- 写出尽可能多的Linux命令
- 您是否使用过版本控制软件?如果有您用的版本控制软件的名字是什么?
- 下列不属于JavaScript语法关键/保留字的是(var, $, function, while)
- 写出三种以上MySQL数据库存储引擎的名称
- 编写一个在线留言本,实现用户的在线留言功能
- 谈谈你对MVC的认识,介绍几种目前比较流行的MVC框架
- 请写出常见的排序算法
- PHP中如何解决网站的大流量与高并发的问题
- JavaScript的HTML样式操作以及jQuery的选择器和事件、样式操作。
- jQuery选择器:基本选择器,层次选择器,过滤选择器,可见性过滤选择器,属性过滤选择器,子元素过滤选择器,表单对象属性过滤选择器
- jQuery事件:$("button").click(function(){...do somthing...})
- jQuery效果:$("p").show()
- jQuery DOM操作:属性,值,节点,CSS,尺寸
- JavaScript中的id为test的元素设置样式为good;
- 要求使用jQuery事件写在页面元素加载完成后,动态绑定click事件到btnOk元素;
- Ajax技术利用了什么协议?简述Ajax的工作机制?
- jQuery的Ajax操作
- 常用方法:$(ele).load(), $.ajax(), $.get(), $.post(), $.getJSON(), $.getScript()
- 系统定时任务
- vi/vim编辑器
- shell基础:脚本执行方式。编写基础:开头用#!指定脚本解释器,如:#!/bin/sh
- 如何实现每天0点重新启动服务器
- 请写出下面MySQL数据类型表达的意义: int(0), char(16), varchar(16), datetime, text
- 牢记以上基础知识点,理解数据类型Char和Varchar的差异,表存储引擎InnoDB和MyISAM的区别。
- 简单描述MySQL中,索引、主键、唯一索引、联合索引的区别,对数据库的性能有什么影响?
- MySQL索引的基础和类型
- 索引的基础
- 索引对性能的影响
- 索引的使用场景
- 索引的类型
- 延伸:MySQL索引的创建原则
- 延伸:MySQL索引的注意事项
- 创建MySQL复合索引应该注意哪些事项?
有A(id,sex,par,c1,c2),B(id,age,c1,c2)两张表,其中A.id与B.id关联,现在要求写一条SQL语句,将B中age>50的记录的c1,c2更新到A表中统一记录的c1,c2字段中。
- MySQL的关联UPDATE语句
- 延伸:MySQL的关联查询语句
- 延伸:MySQL的关联查询语句
- 记录足球比赛的结果:SELECT T1.teamName, M.matchResult, T2.teamName, M.matchTime FROM `match` M LEFT JOIN `team` T1 ON T1.teamID=M.hostTeamID LEFT JOIN `team` T2 ON T2.teamID=M.guestTeamID WHERE M.matchTime between '2018-09-01' and '2018-09-30';
- 请简述项目中优化SQL语句执行效率的方法,从哪些方面,SQL语句性能如何分析?
- 分析SQL查询慢的方法:
- 记录慢查询日志
- 分析查询日志,不要直接打开慢查询日志进行分析,这样比较浪费时间和精力,可以使用pt-query-digest工具进行分析
- 使用show profile
- 使用show status
- 使用show processlist
- 使用explain
- 优化查询过程中的数据访问
- 优化长难的查询语句
- SQL语句优化的有些方法
- 简述MySQL分表操作和分区的工作原理,分别说说分区和分表的使用场景和各自优缺点。
- 分区表的原理,适用场景
- 通过一些HASH算法或者工具实现将一张数据表垂直或者水平进行物理切分,适用场景。
- 延伸:MySQL的复制原理及负载均衡:
- 设定网站的用户数量在千万级,但是活跃用户的数量只有1%,如何通过优化数据库提高活跃用户的访问速度?
- SQL语句应该考察哪些安全性?
- 为什么使用PDO和MySQLi连接数据库会比mysql函数库更加安全。
- 编写一个在线留言本,实现用户的在线留言功能,留言信息存储到数据库,要求设计数据表内容以及使用PHP编码完成。
- 设计一个无限分类表
- 谈谈你对MVC的认识,介绍几种目前比较流行的MVC框架。
- PHP是一种HTML内嵌式的在服务端执行的脚本语言,但是PHP有很多可以使PHP代码和HTML代码分开的模板引擎,例如:Smarty, Twig, Haml, Liquid等。
- 框架中什么是单一入口和多入口,单一入口的优缺点。
- PHP框架有哪些,你用过哪些?各自的优缺点是什么?
- 根据自己的框架使用经验,理解所使用框架的特性。例如:Yii2框架的路由配置等;
- Yii2框架如何实现数据的自动验证?
- 请写出常见的排序算法,并用PHP实现冒泡排序,将数组按照从小到大的方式进行排序。
- PHP如何解决网站大流量和高并发的问题?
- 防盗链的实现方法
- 减少HTTP请求的方式
- 浏览器缓存和压缩优化技术
- 缓存策略的选择
- Nginx配置缓存策略
- 前端代码和资源的压缩
- CDN加速
- 动态语言静态化
- 为什么要静态化
- 动态语言层的并发处理
- 数据库缓存层的优化
- Web服务器的负载均衡、请求分发