面试基础

一、PHP基础
1.php语言的一大优势是跨平台,什么是跨平台?
php运行环境最优搭配为Apache+mysql+php,此运行环境可以在不同的操作系统(windows,linux)上配置,不受操作系统的限制,所以叫跨平台。
2.WEB开发中数据提交方式有几种?有什么区别?百度使用的是哪种方式?
1.Get从服务器获取数据,Post向服务器传送数据。
2.Get传值在url中可见,post在url中不可见。
3.Get传值一般在2KB以内,post传值大小可以在php.ini中进行设置。
4.Get安全性非常低,post安全性较高,但是get比post执行效率高。
建议:1.get安全性比post要低,机密信息建议用post数据提交方式。
2.数据查询用get,增加,删除,修改用post。
百度用的是get的提交方式,从他的url中可以看出。
3.掌握PHP的哪些框架、 模板引擎、系统等
框架:框架有很多,例如zendframe、CI、Yii等等,咱们学过的是thinkphp
模板引擎:也有很多,在课本中有,咱们学过的是smarty
系统:有很多,例如:康盛的产品(uchome、supesite、discuzX等),帝国系统、DEDE(织 梦)、 ecshop等,咱们学过的是 DEDECMS、Ecshop
4.说一下你所掌握的网页前端技术有哪些?
熟练掌握DIV+CSS网页布局,javascript, JQuery框架、photoshop图片处理
5.AJAX的优势是什么?
ajax是异步传输技术,可以通过javascript实现,也可以通过jQuery框架实现,实现局部刷新,减轻了服务器的压力,提高了用户体验。
6.再开发中应该注意哪些安全机制?
1.防远程提交
2.防sql注水,对代码进行过滤
3.防注册机灌水,使用验证码
7.在开发过程中,如何提高程序的运行效率?
1.优化sql语句,查询语句中尽量不使用select*,用哪个字段查哪个字段,少用子查询可用表链接代替,少用模糊查询。
2.数据表穿件索引。
3.对程序中经常用到的的数据进行换缓存。
8.现在编程中经常采取MVC三层结构,请问MVC三层结构指哪三层,有什么优点。
1.MVC三层分别指:业务模型,视图,控制器。
由控制器层调用模型处理数据,然后将数据映射到视图层进行显示。
优点:1.可以实现代码的重用性,避免产生代码冗余。
2 .M和V实现代码分离,从而使同一个程序可以使用不同的表现形式。
9.对json数据格式的理解
JSON是一种轻量级的数据交换格式,json数据格式固定,可以被多种语言用作数据的传递。
php种处理json格式的函数为json_decode(string $json[,bool $assoc]),接受一个json格式的字符串并且把它转换为php变量,参数json待解码的json string格式的字符串。assoc当该参数为TURL时,将返回array而非object。
10.print,echo,print_r有什么区别?
1.echo和print都可以做输出,不同的是,echo不是函数,没有返回值。而print是一个函数有返回值。所以相对而言只是输出echo会更快,而print_r通常用于打印变量的相关信息,通常在调试中使用。
2.print是打印字符串。
3.print_r是打印复合类型。例如:数组,对象
11.SESSION和COOKIE的区别
1.储存位置:session存储于服务器,cookie存储于浏览器。
2.安全性:session比cookie安全性高。
3.session为‘会话服务’,在使用时开启服务,cookie不需要开启,可以直接使用。
12.B/S原理?
13.php处理数组的常用函数?(重点看函数的‘参数’和‘返回值’)
1.array创建数组
2.count返回数组中的数目
3.array_push将一个或多个元素插入数组的末尾(入栈)
4.array_column返回输入数组中某个单一列的值。
5.array_combine通过合并两个数组来创建一个新的数组。
6.array_reverse以相反的顺序返回数组。
7.array_unique删除数组中的重复值。
8.in_array检查数组中是否存在指定的值。
14.php处理字符串的常用函数?(重点看函数的‘参数’和‘返回值’)
1.trim移除字符串两侧的空白字符和其他字符
2.substr_replace把字符串的一部分替换成另一个字符串
3.substr_count计算子串在字符串中出现的次数
4.strtoupper把字符串转换为大写字母
5.substr返回字符串的一部分
6.strtolower把字符串转换成小写字母
7.strtr转换字符串中特定的字符
8.strrchr查找字符串在另一个字符串中最后一次出现
9.strstr查找字符串在另一个字符串中第一次出现(大小写敏感)
10.print输出一个或者多个字符串
11.explode把字符串打散为数组
12.is_string检测变量是否为字符串
13.strip_tags从一个字符串中去除HTML标签
14.mb_substr用来截英文或者中文的函数
15.php处理时间的常用函数(重点看函数的‘参数’和‘返回值’)
1.date_defult_timezone_get 返回默认时区
2.date_defult_timezone_set 设置默认时区
3.date 格式化本地时间/日期
4.getdate 返回日期/时间信息
5.gettimeofday 返回当前时间信息
6.microtime 返回当前时间的微秒数
7.mktime 返回一个日期的Unix时间戳
8.strtotime 将任何英文文本的日期或时间描述解析为Unix时间戳
9.time 返回当前时间的Unix时间戳
16.php处理数据库的常用函数(重点是函数的‘参数’和‘返回值’)
参照php手册
17.php操作文件的常用函数?(重点是函数的‘参数’和‘返回值’)
1.打开文件
2.删除文件
3.读取文件
4.写入文件
5.修改文件
6.关闭文件
7.创建文件等等
(经常用来生成缓存或者静态文件,参考php手册)
18.php操作目录(文件夹)的常用函数?(重点是函数的‘参数’和‘返回值’)
1.打开目录
2.删除目录
3.读取目录
4.创建目录
5.修改目录
6.关闭目录
(经常用来创建或者删除上传文件的目录,创建或者删除缓存,静态页面的目录,参照php手册)
二、数据库
1. 常见的关系型数据库管理系统产品有?
答:oracle、SQL Server、MySQL、Sybase、DB2、Access等。
2. SQL语言包括哪几部分?每部分都有哪些操作关键字?
答:SQL语言包括数据定义(DDL)、数据操纵(DML),数据控制(DCL)和数据查询(DQL)四个部分。
数据定义:Create Table,Alter Table,Drop Table, Craete/Drop Index等
数据操纵:Select ,insert,update,delete,
数据控制:grant,revoke
数据查询:select
3. 完整性约束包括哪些?
答:数据完整性(Data Integrity)是指数据的精确(Accuracy)和可靠性(Reliability)。
分为以下四类:
1) 实体完整性:规定表的每一行在表中是惟一的实体。
2) 域完整性:是指表中的列必须满足某种特定的数据类型约束,其中约束又包括取值范围、精度等规定。
3) 参照完整性:是指两个表的主关键字和外关键字的数据应一致,保证了表之间的数据的一致性,防止了数据丢失或无意义的数据在数据库中扩散。
4) 用户定义的完整性:不同的关系数据库系统根据其应用环境的不同,往往还需要一些特殊的约束条件。用户定义的完整性即是针对某个特定关系数据库的约束条件,它反映某一具体应用必须满足的语义要求。
与表有关的约束:包括列约束(NOT NULL(非空约束))和表约束(PRIMARY KEY、foreign key、check、UNIQUE) 。
4. 什么是事务?及其特性?
答:事务:是一系列的数据库操作,是数据库应用的基本逻辑单位。
事务特性:
(1)原子性:即不可分割性,事务要么全部被执行,要么就全部不被执行。
(2)一致性或可串性。事务的执行使得数据库从一种正确状态转换成另一种正确状态
(3)隔离性。在事务正确提交之前,不允许把该事务对数据的任何改变提供给任何其他事务,
(4) 持久性。事务正确提交后,其结果将永久保存在数据库中,即使在事务提交后有了其他故障,事务的处理结果也会得到保存。
或者这样理解:
事务就是被绑定在一起作为一个逻辑工作单元的SQL语句分组,如果任何一个语句操作失败那么整个操作就被失败,以后操作就会回滚到操作前状态,或者是上有个节点。为了确保要么执行,要么不执行,就可以使用事务。要将有组语句作为事务考虑,就需要通过ACID测试,即原子性,一致性,隔离性和持久性。
5. 什么是锁?
答:数据库是一个多用户使用的共享资源。当多个用户并发地存取数据时,在数据库中就会产生多个事务同时存取同一数据的情况。若对并发操作不加控制就可能会读取和存储不正确的数据,破坏数据库的一致性。
加锁是实现数据库并发控制的一个非常重要的技术。当事务在对某个数据对象进行操作前,先向系统发出请求,对其加锁。加锁后事务就对该数据对象有了一定的控制,在该事务释放锁之前,其他的事务不能对此数据对象进行更新操作。
基本锁类型:锁包括行级锁和表级锁
6. 什么叫视图?游标是什么?
答:视图是一种虚拟的表,具有和物理表相同的功能。可以对视图进行增,改,查,操作,视图通常是有一个表或者多个表的行或列的子集。对视图的修改不影响基本表。它使得我们获取数据更容易,相比多表查询。
游标:是对查询出来的结果集作为一个单元来有效的处理。游标可以定在该单元中的特定行,从结果集的当前行检索一行或多行。可以对结果集当前行做修改。一般不使用游标,但是需要逐条处理数据的时候,游标显得十分重要。
7. 什么是存储过程?用什么来调用?
答:存储过程是一个预编译的SQL语句,优点是允许模块化的设计,就是说只需创建一次,以后在该程序中就可以调用多次。如果某次操作需要执行多次SQL,使用存储过程比单纯SQL语句执行要快。可以用一个命令对象来调用存储过程。
8. 索引的作用?和它的优点缺点是什么?
答:索引就一种特殊的查询表,数据库的搜索引擎可以利用它加速对数据的检索。它很类似与现实生活中书的目录,不需要查询整本书内容就可以找到想要的数据。索引可以是唯一的,创建索引允许指定单个列或者是多个列。缺点是它减慢了数据录入的速度,同时也增加了数据库的尺寸大小。
9. 如何通俗地理解三个范式?
答:第一范式:1NF是对属性的原子性约束,要求属性具有原子性,不可再分解;
第二范式:2NF是对记录的惟一性约束,要求记录有惟一标识,即实体的惟一性; 第三范式:3NF是对字段冗余性的约束,即任何字段不能由其他字段派生出来,它要求字段没有冗余。。
10. 什么是基本表?什么是视图?
答:基本表是本身独立存在的表,在 SQL 中一个关系就对应一个表。 视图是从一个或几个基本表导出的表。视图本身不独立存储在数据库中,是一个虚表
11. 试述视图的优点?
答:(1) 视图能够简化用户的操作 (2) 视图使用户能以多种角度看待同一数据; (3) 视图为数据库提供了一定程度的逻辑独立性; (4) 视图能够对机密数据提供安全保护。
12. NULL是什么意思
答:NULL这个值表示UNKNOWN(未知):它不表示“”(空字符串)。对NULL这个值的任何比较都会生产一个NULL值。您不能把任何值与一个 NULL值进行比较,并在逻辑上希望获得一个答案。
使用IS NULL来进行NULL判断
13. 主键、外键和索引的区别?
主键、外键和索引的区别
定义:
主键--唯一标识一条记录,不能有重复的,不允许为空
外键--表的外键是另一表的主键, 外键可以有重复的, 可以是空值
索引--该字段没有重复值,但可以有一个空值
作用:
主键--用来保证数据完整性
外键--用来和其他表建立联系用的
索引--是提高查询排序的速度
个数:
主键--主键只能有一个
外键--一个表可以有多个外键
索引--一个表可以有多个唯一索引
14. 你可以用什么来确保表格里的字段只接受特定范围里的值?
答:Check限制,它在数据库表格里被定义,用来限制输入该列的值。
触发器也可以被用来限制数据库表格里的字段能够接受的值,但是这种办法要求触发器在表格里被 定义,这可能会在某些情况下影响到性能。
15. 说说对SQL语句优化有哪些方法?(选择几条)
(1)Where子句中:where表之间的连接必须写在其他Where条件之前,那些可以过滤掉最大数量记录的条件必须写在Where子句的末尾.HAVING最后。
(2)用EXISTS替代IN、用NOT EXISTS替代NOT IN。
(3) 避免在索引列上使用计算
(4)避免在索引列上使用IS NULL和IS NOT NULL
(5)对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。
(6)应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描
(7)应尽量避免在 where 子句中对字段进行表达式操作,这将导致引擎放弃使用索引而进行全表扫描
16. SQL语句中‘相关子查询’与‘非相关子查询’有什么区别?
答:子查询:嵌套在其他查询中的查询称之。
子查询又称内部,而包含子查询的语句称之外部查询(又称主查询)。
所有的子查询可以分为两类,即相关子查询和非相关子查询
(1)非相关子查询是独立于外部查询的子查询,子查询总共执行一次,执行完毕后将值传递给外部查询。
(2)相关子查询的执行依赖于外部查询的数据,外部查询执行一行,子查询就执行一次。
故非相关子查询比相关子查询效率高
17. char和 varchar的区别?
答:是一种固定长度的类型,varchar则是一种可变长度的类型,它们的区别是:
char(M)类型的数据列里,每个值都占用M个字节,如果某个长度小于M,MySQL就会在它的右边用空格字符补足.(在检索操作中那些填补出来的空格字符将被去掉)在varchar(M)类型的数据列里,每个值只占用刚好够用的字节再加上一个用来记录其长度的字节(即总长度为L+1字节).
18. Mysql 的存储引擎, myisaminnodb的区别。
答:简单的表达:
MyISAM 是非事务的存储引擎;适合用于频繁查询的应用;表锁,不会出现死锁;适合小数据,小并发
innodb是支持事务的存储引擎;合于插入和更新操作比较多的应用;设计合理的话是行锁(最大区别就在锁的级别上);适合大数据,大并发。
19. 数据表类型有哪些
答:MyISAM、InnoDB、HEAP、BOB,ARCHIVE,CSV等。
MyISAM:成熟、稳定、易于管理,快速读取。一些功能不支持(事务等),表级锁。
InnoDB:支持事务、外键等特性、数据行锁定。空间占用大,不支持全文索引等。
20. MySQL数据库作发布系统的存储,一天五万条以上的增量,预计运维三年,怎么优化?
a. 设计良好的数据库结构,允许部分数据冗余,尽量避免join查询,提高效率。
b. 选择合适的表字段数据类型和存储引擎,适当的添加索引。
c. mysql库主从读写分离。
d. 找规律分表,减少单表中的数据量提高查询速度。
e。添加缓存机制,比如 memcached,apc等。
f. 不经常改动的页面,生成静态页面。
g. 书写高效率的SQL。比如 SELECT * FROM TABEL 改为 SELECT field_1, field_2, field_3 FROM TABLE.
21. 对于大流量的网站,您采用什么样的方法来解决各页面访问量统计问题?
答:a. 确认服务器是否能支撑当前访问量。
b. 优化数据库访问。
c. 禁止外部访问链接(盗链), 比如图片盗链。
d. 控制文件下载。
e. 使用不同主机分流。
f. 使用浏览统计软件,了解访问量,有针对性的进行优化。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值