1、双引号和单引号的差异
双引号阐明变量,单引号不阐明变量
双引号里插入单引号,个中单引号里如果有变量的话,变量阐明
双引号的变量名后面必须要有一个非数字、字母、下划线的分外字符,或者用{}讲变量括起来,否则会将变量名后面的部分当做一个整体,引起语法缺点
双引号阐明转义字符,单引号不阐明转义字符,但是阐明'\和\\
能使单引号字符只管即便利用单引号,单引号的效率比双引号要高(由于双引号要先遍历一遍,判断里面有没有变量,然后再进行操作,而单引号则不须要判断)
2、常用的超全局变量(8个)
$_GET ----->get传送办法
$_POST ----->post传送办法
$_REQUEST ----->可以吸收到get和post两种办法的值
$GLOBALS ----->所有的变量都放在里面
$_FILES ----->上传文件利用
$_SERVER ----->系统环境变量
$_SESSION ----->会话掌握的时候会用到
$_COOKIE ----->会话掌握的时候会用到
3、HTTP中POST、GET、PUT、DELETE办法的差异
HTTP定义了与做事器交互的不同的方法,最基本的是POST、GET、PUT、DELETE,与其比不可少的URL的全称是资源描述符,我们可以这样理解:url描述了一个网络上资源,而post、get、put、delegate便是对这个资源进行增、删、改、查的操作!
3.1表单中get和post提交办法的差异
get是把参数数据行列步队加到提交表单的action属性所指的url中,值和表单内各个字段逐一对应,从url中可以看到;post是通过HTTPPOST机制,将表单内各个字段与其内容防止在HTML的head中一起传送到action属性所指的url地址,用户看不到这个过程
对付get办法,做事器端用Request.QueryString获取变量的值,对付post办法,做事器端用Request.Form获取提交的数据
get传送的数据量较小,post传送的数据量较大,一样平常被默认不受限定,但在理论上,IIS4中最大量为80kb,IIS5中为1000k,get安全性非常低,post安全性较高
3.2
GET要求会向数据库发索取数据的要求,从而来获取信息,该要求就像数据库的select操作一样,只是用来查询一下数据,不会修正、增加数据,不会影响资源的内容,即该要求不会产生副浸染。无论进行多少次操作,结果都是一样的。
与GET不同的是,PUT要求是向做事器端发送数据的,从而改变信息,该要求就像数据库的update操作一样,用来修正数据的内容,但是不会增加数据的种类等,也便是说无论进行多少次PUT操作,其结果并没有不同。
POST要求同PUT要求类似,都是向做事器端发送数据的,但是该要求会改变数据的种类等资源,就像数据库的insert操作一样,会创建新的内容。险些目前所有的提交操作都是用POST要求的。
DELETE要求顾名思义,便是用来删除某一个资源的,该要求就像数据库的delete操作。
4、PHP先容
Hypertext Preprocessor----超文本预处理器
Personal Home Page 原始名称
目标用场: 许可web开拓职员快速编写动态天生的web页面,与其他页面比较,PHP是将程序嵌入到HTML文档中去实行,效率比完备天生HTML编辑的CGI高很多
HTML: Hypertext Markup Language
创始人: 拉姆斯勒·勒多夫Rasmus Lerdorf,1968年生,加拿大滑铁卢大学
勒多夫最开始是为了掩护个人网页,用prel措辞写了掩护程序,之后又用c进行了重写,终极衍生出php/fi
韶光轴:
1995.06.08将PHP/FI公开释出
1995 php2.0,加入了对MySQL的支持
1997 php3.0
2000 php4.0
2008 php5.0
由于php6.0没有完备办理Unicode编码,以是基本没有生产线上的运用,基本只是一款观点产品,很多功能已经在php5.3.3和php5.3.4上实现
常见的IDE(Intergrated Development Environment): 集成开拓环境
Coda(mac)
PHPStrom
Adobe Dreamweaver
NetBeans
常见文本编辑器,具备代码高亮:
NodePad++
SublimeText
PHP上风
PHP特性:
php独特稠浊了C,Java,Prel以及PHP自创的语法
可以比CGI或者Prel更快速去实行动态网页,与其他变成措辞比较,PHP是讲程序嵌入到HTML文档中去实行,实行效率比完备天生HTML编辑的CGI要高很多,所有的CGI都能实现
支持险些所有盛行的数据库以及操作系统
PHP可以利用C,C++进行程序的扩展
PHP上风:
开放源代码
免费性
快捷性
跨平台强
效率高
图形处理
面向工具
专业专注
PHP技能运用:
静态页面天生
数据库缓存
过程缓存
p+css w3c标准
大负荷
分布式
flex
支持MVC
Smarty模块引擎
PHP认证级别
低级 IFE:Index Front Engineer 前端工程师
中级 IPE:Index PHP Engineer PHP工程师
高等 IAE:Index Architecture Engineer 架构工程师
6、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() 判断一个变量的类型和长度,并输出变量的数值
7、HTTP状态码
常见的HTTP状态码:
200 - 要求成功
301 - 资源(网页等)被永久转义到其他URL
404 - 要求的资源(网页等)不存在
505 - 内部做事器缺点
HTTP状态码分类:
1 - 信息,做事器收到的要求,须要要求者连续实行操作
2 - 成功,操作被成功吸收并处理
3 - 重定向,须要进一步的操作以完成要求
4 - 客户端缺点,要求包含语法缺点或者无法完成要求
5 做事器缺点,做事器在处理要求的过程
中发生了缺点
8、什么是魔术引号
魔术引号是一个将自动将进入PHP脚本的数据进行转义的过程,最好在编码时不要转义而在运行时根据须要而转义
9、如何获取客户真个ip(哀求取得一个int)和做事器ip的代码
客户端:$_SERVER[\"大众REMOTE_ADDR\"大众];或者getenv('REMOTE_ADDR')
ip2long进行转换
做事器端:gethostbyname('www.baidu.com')
10、利用那些工具进行版本掌握
cvs、svn、vss、git
11、优化数据库的方法
选取最适用的字段属性,尽可能减少定义字段宽度,只管即便把字段设置NOTNULL,例如'省份'、'性别'最好适用ENUM
利用连接(JOIN)来代替子查询
适用联合(UNION)来代替手动创建的临时表
事务处理
锁定表、优化事务处理
适用外键,优化锁定表
建立索引
优化查询语句
12、是否利用过模板引擎?利用的模板引擎的名字是?
Smarty:Smarty算是一种很老的PHP模板引擎了,它曾是我利用这门措辞模板的最初选择。虽然它的更新已经不算频繁了,并且短缺新一代模板引擎所具有的部分特性,但是它仍旧值得一看。
13、对付大流量网站,采取什么方法来办理访问量的问题
确认做事器硬件是否能够支持当前的流量
数据库读写分离,优化数据表
程序功能规则,禁止外部的盗链
掌握大文件的下载
利用不同主机分流紧张流量
14、语句include和require的差异是什么?为避免多次包含同一文件,可以用(?)语句代替他们
require是无条件包含,也便是如果一个流程里加入require,无论条件成立与否都会先实行require,当文件不存在或者无法打开的时候,会提示缺点,并且会终止程序实行
include有返回值,而require没有(可能由于如此require的速率比include快),如果被包含的文件不存在的化,那么会提示一个缺点,但是程序会连续实行下去
把稳:包含文件不存在或者语法缺点的时候require是致命的,而include不是
require_once表示了只包含一次,避免了重复包含
15、谈谈mvc的认识
由模型、视图、掌握器完成的运用程序,由模型发出要实现的功能到掌握器,掌握器吸收组织功能通报给视图
16、 解释php中传值与传引用的差异,并解释传值什么时候传引用?
变量默认总是传值赋值,那也便是说,当将一个表达式的值授予一个变量时,全体表达式的值被赋值到目标变量,这意味着:当一个变量的授予其余一个变量时,改变个中一个变量的值,将不会影响到其余一个变量
php也供应了其余一种办法给变量赋值:引用赋值。这意味着新的变量大略的引用(换言之,成为了其别名或者指向)了原始变量。改动的新的变量将影响到原始变量,反之亦然。利用引用赋值,大略地将一个&符号加到将要赋值的变量前(源变量)
工具默认是传引用
对付较大是的数据,传引用比较好,这样可以节省内存的开销
17、isset、empty、is_null的差异
isset 判断变量是否定义或者是否为空
变量存在返回ture,否则返回
false
变量定义不赋值返回
false
unset
一个变量,返回
false
变量赋值为null,返回
false
empty:判断变量的值是否为空,能转换为false的都是空,为空返回true,反之返回false。
\公众\公众
,0,
\"大众0\"大众
,NULL,FALSE都认为为空,返回
true
没有任何属性的工具都认为是空
is_null:检测传入的值(值、变量、表达式)是否为null
定义了,但是赋值为Null
定义了,但是没有赋值
unset
一个变量
18、前端调试的工具
Firefox的firebug
Chrome的开拓工具
Emmet
JSON格式校验工具
19. 大略描述mysql中,索引,主键,唯一索引,联合索引的差异,对数据库的性能有什么影响(从读写两方面)(新浪网技能部)
索引是一种分外的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针。
普通索引(由关键字KEY或INDEX定义的索引)的唯一任务是加快对数据的访问速率。
普通索引许可被索引的数据列包含重复的值。如果能确定某个数据列将只包含彼此各不相同的值,在为这个数据列创建索引的时候就该当用关键字UNIQUE把它定义为一个唯一索引。也便是说,唯一索引可以担保数据记录的唯一性。
主键,是一种分外的唯一索引,在一张表中只能定义一个主键索引,主键用于唯一标识一条记录,利用关键字 PRIMARY KEY 来创建。
索引可以覆盖多个数据列,如像INDEX(columnA, columnB)索引,这便是联合索引。
索引可以极大的提高数据的查询速率,但是会降落插入、删除、更新表的速率,由于在实行这些写操作时,还要操作索引文件。
20.数据库中的事务是什么?
事务(transaction)是作为一个单元的一组有序的数据库操作。如果组中的所有操作都成功,则认为事务成功,纵然只有一个操作失落败,事务也不堪利。如果所有操作完成,事务则提交,其修正将浸染于所有其他数据库进程。如果一个操作失落败,则事务将回滚,该事务所有操作的影响都将取消。ACID 四大特性,原子性、隔离性、同等性、持久性。
21.理解XSS攻击吗?如何防止?
XSS是跨站脚本攻击,首先是利用跨站脚本漏洞以一个特权模式去实行攻击者布局的脚本,然后利用不屈安的Activex控件实行恶意的行为。
利用htmlspecialchars()函数对提交的内容进行过滤,使字符串里面的分外符号实体化。
22.SQL注入漏洞产生的缘故原由?如何防止?
SQL注入产生的缘故原由:程序开拓过程中不把稳规范书写sql语句和对分外字符进行过滤,导致客户端可以通过全局变量POST和GET提交一些sql语句正常实行。
防止SQL注入的办法:
开启配置文件中的magic_quotes_gpc 和 magic_quotes_runtime设置
实行sql语句时利用addslashes进行sql语句转换
Sql语句书写只管即便不要省略双引号和单引号。
过滤掉sql语句中的一些关键词:update、insert、delete、select、 。
提高数据库表和字段的命名技巧,对一些主要的字段根据程序的特点命名,取不易被猜到的。
Php配置文件中设置register_globals为off,关闭全局变量注册
掌握缺点信息,不要在浏览器上输出错误信息,将缺点信息写到日志文件中。
23.PHP网站的紧张攻击办法有哪些?
命令注入(Command Injection)
eval 注入(Eval Injection)
客户端脚本攻击(Script Insertion)
跨网站脚本攻击(Cross Site Scripting, XSS)
SQL 注入攻击(SQL injection)
跨网站要求假造攻击(Cross Site Request
Forgeries, CSRF)
Session 会话挟制(Session Hijacking)
Session 固定攻击(Session Fixation)
HTTP 相应拆分攻击(HTTP Response Splitting)
文件上传漏洞(File Upload Attack)
目录穿越漏洞(Directory Traversal)
远程文件包含攻击(Remote Inclusion)
动态函数注入攻击(Dynamic Variable
Evaluation)
URL 攻击(URL attack)
表单提交欺骗攻击(Spoofed Form
Submissions)
HTTP 要求欺骗攻击(Spoofed HTTP Requests)
24、框架中什么是单一入口和多入口 , 单一入口的优缺陷?
多口便是通过访问不同的文件来完成用户要求。单一入口只 web 程序所有的要求都指向一个脚本文件的。
单一入口更随意马虎掌握权限,方便对 http 要求可以进行安全性检讨。
缺陷:URL 看起来不那么都雅,特殊是对搜索引擎来说不友好。
25、 对付关系型数据库而言,索引是相称主要的观点,请回答有关索引的几个问题:
a)、索引的目的是什么?
快速访问数据表中的特定信息,提高检索速率
创建唯一性索引,担保数据库表中每一行数据的唯一性。
加速表和表之间的连接
利用分组和排序子句进行数据检索时,可以显著减少查询等分组和排序的韶光
b)、索引对数据库系统的负面影响是什么?
负面影响:
创建索引和掩护索引须要耗费韶光,这个韶光随着数据量的增加而增加;索引须要占用物理空间,不只是表须要占用数据空间,每个索引也须要占用物理空间;当对表进行增、删、改、的时候索引也要动态掩护,这样就降落了数据的掩护速率。
c)、为数据表建立索引的原则有哪些?
在最频繁利用的、用以缩小查询范围的字段上建立索引。
在频繁利用的、须要排序的字段上建立索引
d)、 什么情形下不宜建立索引?
对付查询中很少涉及的列或者重复值比较多的列,不宜建立索引。
对付一些分外的数据类型,不宜建立索引,比如文本字段(text)等。
26、 简述在MySQL数据库中MyISAM和InnoDB的差异
差异于其他数据库的最主要的特点便是其插件式的表存储引擎。牢记:存储引擎是基于表的,而不是数据库。
InnoDB与MyISAM的差异:
InnoDB存储引擎: 紧张面向OLTP(Online Transaction Processing,在线事务处理)方面的运用,是第一个完全支持ACID事务的存储引擎(BDB第一个支持事务的存储引擎,已经停滞开拓)。
特点:
行锁设计、支持外键;
支持类似于Oracle风格的同等性非锁定读(即:默认情形下读取操作不会产生锁);
InnoDB将数据放在一个逻辑的表空间中,由InnoDB自身进行管理。从MySQL4.1版本开始,可以将每个InnoDB存储引擎的表单独存放到一个独立的ibd文件中;
InnoDB通过利用MVCC(多版本并发掌握:读不会壅塞写,写也不会壅塞读)来得到高并发性,并且实现了SQL标准的4种隔离级别(默认为REPEATABLE级别);
InnoDB还供应了插入缓冲(insert buffer)、二次写(double write)、自适应哈希索引(adaptive hash index)、预读(read ahead)等高性能和高可用的功能;
InnoDB采取了聚拢(clustered)的办法来存储表中的数据,每张标的存储都按主键的顺序存放(如果没有显式的在建表时指定主键,InnoDB会为每一行天生一个6字节的ROWID,并以此作为主键);
InnoDB表会有三个隐蔽字段:除了上面提到了6字节的DB_ROW_ID外,还有6字节的DB_TX_ID(事务ID)和7字节的DB_ROLL_PTR(指向对应回滚段的地址)。这个可以通过innodb monitor看到;
MyISAM存储引擎: 是MySQL官方供应的存储引擎,紧张面向OLAP(Online Analytical Processing,在线剖析处理)方面的运用。特点:
不支持事务,支持表所和全文索引。操作速率快;
MyISAM存储引擎表由MYD和MYI组成,MYD用来存放数据文件,MYI用来存放索引文件。MySQL数据库只缓存其索引文件,数据文件的缓存交给操作系统本身来完成;
MySQL5.0版本开始,MyISAM默认支持256T的单表数据;
27、 阐明MySQL外连接、内连接与自连接的差异
先说什么是交叉连接: 交叉连接又叫笛卡尔积,它是指不该用任何条件,直接将一个表的所有记录和另一个表中的所有记录逐一匹配。
内连接 则是只有条件的交叉连接,根据某个条件筛选出符合条件的记录,不符合条件的记录不会涌如今结果集中,即内连接只连接匹配的行。外连接 其结果集中不仅包含符合连接条件的行,而且还会包括左表、右表或两个表中
的所有数据行,这三种情形依次称之为左外连接,右外连接,和全外连接。
左外连接,也称左连接,左表为主表,左表中的所有记录都会涌如今结果集中,对付那些在右表中并没有匹配的记录,仍旧要显示,右边对应的那些字段值以NULL来添补。右外连接,也称右连接,右表为主表,右表中的所有记录都会涌如今结果集中。左连接和右连接可以互换,MySQL目前还不支持全外连接。
28、 写出三种以上MySQL数据库存储引擎的名称(提示:不区分大小写)
MyISAM、InnoDB、BDB(BerkeleyDB)、Merge、Memory(Heap)、Example、Federated、
Archive、CSV、Blackhole、MaxDB 等等十几个引擎
29、 什么是面向工具?紧张特色是什么?几大原则是什么?
面向工具是程序的一种设计模式,它利于提高程序的重用性,使程序机构更加清晰。 紧张特色是:封装、继续、多态。
五大基本原则: 单一职责原则;开放封闭原则;更换原则; 依赖原则; 接口分离原则。
30、什么是静态路由,其特点是什么?什么是动态路由,其特点是什么?
参考答案:
静态路由是由系统管理员设计与构建的路由表规定的路由。适用于网关数量有限的场 合,且网络拓朴构造不常常变革的网络。其缺陷是不能动态地适用网络状况的变革,当 网络状况变革后必须由网络管理员修正途由表。
动态路由是由路由选择协议而动态构建的,路由协议之间通过交流各自所拥有的路由信 息实时更新路由表的内容。动态路由可以自动学习网络的拓朴构造,并更新路由表。其 缺陷是路由广播更新信息将霸占大量的网络带宽。
31、利用过 Memcache 缓存吗,如果利用过,能够大略的描述一下它的事情事理吗?
Memcahce 是把所有的数据保存在内存当中,采取 hash 表的办法,每条数据由 key 和 value 组成,每个 key 是独一无二的,当要访问某个值的时候先按照找到值,然后返回结果。
Memcahce 采取 LRU 算法来逐渐把过期数据打消掉。
32. 列举盛行的 Ajax 框架?解释 Ajax 实现事理是什么及 json 在 Ajax 中起什么浸染?
盛行的 Ajax 框架有 jQuery,Prototype,Dojo,MooTools。
Ajax 的事情事理是一个页面的指定位置可以加载另一个页面所有的输出内容,这样就实现了一个静态页面也能获取到数据库中的返回数据信息了。以是 Ajax 技能实现了一个静态网页在不刷新全体页面的情形下与做事器通信,减少了用户等待韶光,同时也从而降落了网络流量,增强了客户体验的友好程度。
在利用 Ajax 时,涉及到数据传输,即将数据从做事器返回到客户端,做事器端和客户端分别利用不同的脚步措辞来处理数据,这就须要一种通用的数据格式,XML 和 json 便是最常用的两种,而 json 比 XML 更大略。
33、Myql中的事务回滚机制概述
事务是用户定义的一个数据库操作序列,这些操作要么全做要么全不做,是一个不可分割的事情单位,事务回滚是指将该事务已经完成的对数据库的更新操作撤销。
要同时修正数据库中两个不同表时,如果它们不是一个事务的话,当第一个表修正完,可能第二个表修正过程中涌现了非常而没能修正,此时就只有第二个表依旧是未修正之前的状态,而第一个表已经被修正完毕。而当你把它们设定为一个事务的时候,当第一个表修正完,第二表修正涌现非常而没能修正,第一个表和第二个表都要回到未修正的状态,这便是所谓的事务回滚。