mysql面试题及答案.docx
《mysql面试题及答案.docx》由会员分享,可在线阅读,更多相关《mysql面试题及答案.docx(12页珍藏版)》请在冰豆网上搜索。
mysql面试题及答案
mysql面试题及答案
篇一:
php经典面试题及答案非常实用】
>目录
面试题
面试题
1
3
面试题
三
4
面试题
四
6
面试题
五
7
面试题
六
8
面试题
七
9
本面试题分为七套,这些大部分都是本人被面试过的总结,发出来给大家参考,希望能助你在面试中顺利过关!
面试题一
1、表单提交get和post有何区别?
答:
get的方式是把数据在地址栏中发送,get传送的数据量较小,不能大于2kb。
post传送的数据量较大,一般被默认为不受限制。
但理论上,iis4中最大量为80kb,iis5中为100kb。
2、用php打印出前一天的时间格式是2006-5-1022:
21:
21echodate(y-m-dh:
i:
s,time()-(3600*24));或echodate(y-m-d
h:
i:
s,strtotime(-1day));
3、php中include和require的区别?
这两种结构除了在如何处理失败之外完全一样。
include()产生一个警告而require()则导致一个致命错误。
换句话说,如果你想在遇到丢失文件时停止处理页面就用require。
。
include()就不是这样,脚
本会继续运行。
4、echo(),print(),print_r()的区别
echo可以接多个参数,print只能接一个参数,它们都是php的语言结构,print_r是递规打印,用来打印数组或对象
5、能够使html和php分离开使用的模板smarty,phplib,smarttemplate6你如何理解mvc模式?
首先说一下框架,框架:
就是别人把一些底层,常用操作.比如数据操作(增,删,改,查)写好.你来直接用.其它的功能要自己来做。
mvc:
设计模式,m模型,v显示,c控制.现在许多框架都是基于mvc来
做的把逻辑和显示分开.比如你要换页面,只需要改v里面的东西并不需要再去变动程序(详细的东西可以上网上!
查一下)
7、如何实现php、jsp交互?
php提供了支持java的类库文件,或者通过http协议来交互数据8、使用哪些工具进行版本控制?
vss,cvs,svn
9、如何实现字符串翻转?
不考虑中英文混合,不是最优算法,不用php库函数翻转字符串:
functionstr_to_reverse($str){for($length=0;$str[$length]!
=null;$length++){;}
$strlength=$length-1;
unset($length);
for($start=0,$end=$strlength;$start$end;$start++,$end--){$temp=$str[$start];
$str[$start]=$str[$end];
$str[$end]=$temp;
}
unset($temp,$start,$end,$strlength);
return$str;
}
10、优化mysql数据库的方法。
1)将where中用的比较频繁的字段建立索引,联合索引。
2)保证单表数据不超过200w,适时分割表。
3)避免使用长连接。
4)修改f里面的各项参数,比如最大连接数,查询缓存等。
根据你的服务器内存来最大化调节那些配置参数。
5)针对需求,使用正确的表引擎,是myisam或是innodb。
11.用php写出显示客户端ip与服务器ip的代码:
echo$_server[remote_addr]//客户端ip
echo$_server[server_addr]//服务器端ip
12、apache+mysql+php实现最大负载的方法
1)问的太笼统,生成静态html页面,squid反向代
理,apache,mysql的负载均衡。
2)可以采取数据缓存的方法,我们通常在统计数据的时候,需要在原始数据的基础上经过计算等一系列操作,才会得到最终的结果,如果每做一个查询都需要这样一系列操作,当数据量大时,势必会带来很多问题。
可以建立一个结果表,写一个脚本,用crontab定时触发脚本去原始表取数据,计算,写入到结果表,前端查询从结果表取数据,这也是比较常用的一种做法。
3)采用分布式,多个apache,多个mysql,其实就是dns负载均衡,dns根据当前用户解析几个ip的ping值,将用户转移到某一台最快的服务器,或者平均分配。
4)money不是问题的话,可以考虑f5硬件负载均衡!
5)可以使用microsoftwindowsserver系统的负载均衡设置
面试题二
1、php/mysql编程
1)某内容管理系统中,表message有如下字段
id文章id
title文章标题
content文章内容
category_id文章分类id
hits点击量
创建上表,写出mysql语句
2)同样上述内容管理系统:
表comment记录用户回复内容,字段如下
comment_id回复id
id文章id,关联message表中的id
comment_content回复内容
现通过查询数据库需要得到以下格式的文章标题列表,并按照回复数
量排序,回复最高的排在最前面
文章id文章标题点击量回复数量
用一个sql语句完成上述查询,如果文章没有回复则回复数量显示为0
3)上述内容管理系统,表category保存分类信息,字段如下category_idint(4)notnullauto_increment;
categroy_namevarchar(40)notnull;用户输入文章时,通过选择下拉菜单选定文章分类写出如何实现这个下拉菜单
2、php文件操作
1)
上述内容管理系统:
用户提交内容后,系统生成静态html页面;写出实现的基本思路ob_start();
3、实现中文字串截取无乱码的方法。
这个首先要考虑字符集的问题,utf-8下一个汉字占3字节,gbk下一个汉字占2字节.可以自己写个函数来处理,别人也写了很多,当然也可以开启mbstring扩展库,使用里面的mb_substr()等函数来截取。
当截取字符出现乱码时,是因为汉字被截断了,可以再字符串尾部连上一个chr(0)
var$empty=;
var$null=null;
var$bool=false;
var$notset;
var$array=array();
面试题三
1.
$a=hello;
$b=$a;
unset($b);
$b=world;
whatis$a?
hello,unset($b)只是释放了$b自己和$a的别名关系,并不会释放$a
2.
$a=1;
$x=$a;
$b=$a++;
whatis$b?
1,先执行$b=$a,$a++再进行,所以$b还是1
3.
$x=empty($array);whatis$x?
trueorfalsetrue,$array是空数组
4.您是否用过版本控制软件?
如果有您用的版本控制软件的名字是?
cvs:
wincvs,是一个cvs的客户端
vss,微软的产品,比较适合中小型项目,只支持单人checkout
5.您是否用过模板引擎?
如果有您用的模板引擎的名字是?
smarty,php官方推荐的模板引擎,它是编译型模板,与phplib不太相同,功能强大,30多种标签,支持cache
6.请简单阐述您最得意的开发之作.
hdwiki,开源项目,mediawiki的使用性国人很不适应,代码修改起来也比较困难.hdwiki比较适合目前的国人使用.
7.对于大流量的网站,您采用什么样的方法来解决访问量问题?
1squid反向代理
8、谈谈事务处理可以控制并发操作所产生的数据同步提交、更新所带来的冲突问题.可以进行comit,rollback操作,数据的安全性得到了提高。
2)简单描述用户修改以发布内容的实现流程和基本思路
9、php程序
1)写出以下程序的输出结果
?
$b=201;$c=40;
$a=$b$c?
4:
5;echo$a;
【篇二:
mysql数据库笔试题
(一)】
>一、选择题
1.数据库系统的核心是_b___。
a.数据库b.数据库管理系统
c.数据模型d.软件工具
2.sql语言具有__b__的功能。
a.关系规范化、数据操纵、数据控制
b.数据定义、数据操纵、数据控制
c.数据定义、关系规范化、数据控制
d.数据定义、关系规范化、数据操纵
3.sql语言的数据操纵语句包括select,insert,update和
delete,最重要的,也是使用最频繁的语句是__a__。
a.selectb.insertc.updated.delete
4.在关系数据库设计中,设计关系模式是__c__的任务。
a.需求分析阶段b.概念设计阶段c.逻辑设计阶段d.物理设计阶段
5.__c__是dbms的基本单位,它是用户定义的一组逻辑一致的程序序列。
a.程序b.命令c.事务d.文件
6.在数据库中,产生数据不一致的根本原因是__d__。
a.数据存储量太大
b.没有严格保护数据
c.未对数据进行完整性控制
d.数据冗余
7.下列sql语句中,创建关系表的是__b__。
a.alterb.create
c.updated.insert
8.数据库的__b__是为了保证由授权用户对数据库所做的修改不会影响数据一致性的损失。
a.安全性b.完整性c.并发控制d.恢复
9.事务是数据库进行的基本工作单位。
如果一个事务执行成功,则全部更新提交;如果一个事务执行失败,则已做过的更新被恢复原状,好像整个事务从未有过这些更新,这样保持了数据库处于b___状态。
a.安全性b.一致性c.完整性d.可靠性
10.对并发操作若不加以控制,可能会带来数据的___d_问题。
a.不安全b.死锁c.死机d.不一致
二、填空题
1.数据冗余可能导致的问题有和
答案:
①浪费存储空间及修改麻烦②潜在的数据不一致性
2.数据库在运行过程中可能产生的故障有
答案:
①transactionfailure②systemcrash③diskfailure
3.视图是一个虚表,它是从中导出的表。
在数据库中,
只存放视图的,不存放视图的。
答案:
一个或几个基本表、定义、视图对应的数据
4.关系操作的特点是操作。
答案:
集合
三、简答题
1、如何创建表、修改表、删除表?
createtable表名
altertable表名
droptable表名
2、存储过程的优点是什么?
存储过程的优点:
1.提高性能
2.减轻网络拥塞
3.一致性较好
4.改善安全机制
3、什么是触发器?
触发器有哪几种?
触发器有什么优点?
一个触发器是由t-sql语句集组成的代码块,在响应某些动作时激活该语句集有insert,delete,update触发器它防止了对数据的不正确、未授权的和不一致的改变
4、常见的几种约束有哪些?
分别代表什么意思?
如何使用?
主键约束,外键约束,检查约束,唯一约束,默认约束约束:
在createtable或altertable时加约束
(1)主键:
primarykey(主键字段)保证了实体完整性,一个表只有一个主键,但一个主键可有包含多个字段,主键字段不能为空
(2)唯一:
unique(约束字段)保证了实体完整性,一个表只有多个唯一约束,一个唯一约束可有包含多个字段
(3)外键:
foreignkey(外键字段)references主键表(主键字段)保证了引用完整性,一个表可以有多个外键
(4)检查:
check(检查表达式)保证了域完整性,一个表中可以有多个检查性约束
(5)默认值:
default(默认值的表达式或null)for字段名保证了域完整性,一个表可以有多个默认值约束,但是一个字段只有一个默认值
5、什么是数据库的安全性?
数据库的安全性是指保护数据库以防止不合法的使用所造成的数据泄露、更改或破坏。
6、简要说明事务的原子性。
事务的所有操作必须完成,否则事务将被撤消。
也就是说,事务是作为一个整体的单位处理,不可以被分割
7、事务中的提交和回滚是什么意思?
事务中的提交(commit)是提交事务的所有操作。
具体说就是将事务中所有对数据库的更新写回到磁盘上的物理数据库中去,事务正常结束。
事务中的回滚(rollback)是数据库滚回到事务开始时的状态。
具体地说就是,在事务运行的过程中发生了某种故障,事务不能继续执行,系统将事务中对数据库的所有已完成的更新操作全部撤消,使数据库回滚到事务开始时的状态。
四、设计题
1、学生表:
student学生表(学号,姓名,性别,年龄,组织部门)course课程表(编号,课程名称)sc选课表(学号,课程编号,成绩)表结构如下:
(1).写一个sql语句,查询选修了'计算机原理'的学生学号和姓名
(2).写一个sql语句,查询'周星驰'同学选修了的课程名字
(3).写一个sql语句,查询选修了5门课程的学生学号和姓名selectsno,snamefromstudentwheresnoin(selectsnofromscwherecno=(selectcnofromcoursewherecname=计算机原理)
)
(2)selectcnamefromcoursewherecnoin(selectcnofromsc
wheresno=
(
selectsno
fromstudent
wheresname=周星驰)
)
(3)selectsno,sname
fromstudent
wheresnoin(selectsnofromscgroupbysnohavingcount(sno)=5)【篇三:
mysql数据库面试题】
10:
06:
51我来说两句作者:
黄杉
收藏我要投稿
公司招聘mysqldba面试心得
12年mysqldba经验其中许多有水分,一看到简历自我介绍,说公司项目的时候,会写上linux系统维护,mssqlserver项目,或者oracledatagard项目,一般如果有这些的话,工作在3年到4年的话,他的2年mysqldba管理经验,是有很大的水分的。
刚开始我跟领导说,这些不用去面试了,肯定mysqldba经验不足,领导说先面面看看,于是我就面了,结果很多人卡在基础知识这一环节之上,比如:
(1)有的卡在复制原理之上
(2)有的卡在binlog的日志格式的种类和分别
(3)有的卡在innodb事务与日志的实现上。
个人觉得如果有过真正的2年mysql专职dba经验,那么肯定会在mysql的基本原理上有所研究,因为很多问题都不得不让你去仔细研究各种细节,而自己研究过的细节肯定会记忆深刻,别人问起一定会说的头头是道,起码一些最基本的关键参数比如seconds_behind_master为60这个值60的准确涵义,面试了10+的mysqldba,没有一个说的准确,有的说不知道忘记了,有的说是差了60秒,有的说是与主上执行时间延后了60秒。
2对于简历中写有熟悉mysql高可用方案
我一般先问他现在管理的数据库架构是什么,如果他只说出了主从,而没有说任何ha的方案,那么我就可以判断出他没有实际的ha经验。
不过这时候也不能就是断定他不懂mysql高可用,也许是没有实际机会去使用,那么我就要问mmm以及mha以及mm+keepalived等的原理实现方式以及它们之间的优势和不足了,一般这种情况下,能说出这个的基本没有。
3对于简历中写有批量mysql数据库服务器的管理经验这个如果他说有的话,我会先问他们现在实际线上的mysql数据库数量有多少,分多少个节点组,最后问这些节点组上面的slowlog是如何组合在一起来统计分析的。
如果这些他都答对了,那么我还有一问,就是现在手上有600台数据库,新来的机器,mysql都安装好了,那么你如何在最快的时间里面把这600台mysql数据库的mysqld服务启动起来。
这个重点在于最快的时间,而能准确回答出清晰思路的只有2个人。
4对于有丰富的sql优化的经验
首先问mysql中sql优化的思路,如果能准备说出来,ok,那么我就开始问explain的各种参数了,重点是select_type,type,possible_key,ref,rows,extra等参数的各种值的含义,如果他都回答正确了,那么我再问filesort的含义以及什么时候会出现这个分析结果,如果这里他也回答对了,那么我就准备问profile分析了,如果这里他也答对了,那么我就会再问一个问题,那是曾经tx问我的让我郁闷不已的问题,一个6亿的表a,一个3亿的表b,通过外间tid关联,你如何最快的查询出满足条件的第50000到第50200中的这200条数据记录。
5对于有丰富的数据库设计经验这个对于数据库设计我真的没有太多的经验,我也就只能问问最基础的,mysql中varchar(60)60是啥含义,int(30)中30是啥含义?
如果他都回答对了,那么我就问mysql中为什么要这么设计呢?
如果他还回答对了,我就继续问int(20)存储的数字的上限和下限是多少?
这个问题难道了全部的mysqldba的应聘者,不得不佩服提出这个问题的金总的睿智啊,因为这个问题回答正确了,那么他确实认认真真地研究了mysql的设计中关于字段类型的细节。
至于丰富的设计数据库的经验,不用着急,这不我上面还有更加厉害的dba吗,他会搞明白的,那就跟我无关了。
6关于mysql参数优化的经验。
首先问他它们线上mysql数据库是怎么安装的,如果说是rpm安装的,那么我就直接问调优参数了,如果是源码安装的,那么我就要问编译中的一些参数了,比如f以及存储引擎以及字符类型等等。
然后从以下几个方面问起:
(1)mysql有哪些global内存参数,有哪些local内存参数。
(2)mysql的写入参数需要调整哪些?
重要的几个写参数的几个值得含义以及适用场景,比如innodb_flush_log_at_trx_commit等。
(3)读取的话,那几个全局的pool的值的设置,以及几个local的buffer的设置。
(4)还有就是著名的querycache了,以及querycache的适用场景了,这里有一个陷阱,就是高并发的情况下,比如双十一的时候,querycache开还是不开,开了怎么保证高并发,不开又有何别的考虑?
7关于事物隔离级别。
这个最起码你得知道那4个隔离级别的名字吧,以及之间的区别,还有你当前自己数据库里面设置的是哪个级别吧,可惜的是面试了那么多,能准备想都不用想的回答出的就只有一个,而且他只说出了前3个级别的名字。
8关于熟悉mysql的锁机制。
那么gap锁,next-key锁,以及innodb的行锁是怎么实现的,以及myisam的锁是怎么实现的等,可惜能准备说出这些的只有一个mysqldba。
9关于熟悉mysql集群的。
我就问了ndbd的节点的启动先后顺序,再问配置参数中的内存配置几个重要的参数,再问sql节点中执行一个join表的select语句的实现流程是怎么走的?
ok,能回答的也只有一个。
10关于有丰富的备份经验的
就问mysqldump中备份出来的sql,如果我想sql文件中,一行只有一个insertvalue()的话,怎么办?
如果备份需要带上
master的复制点信息怎么办?
或者
xtrabackup中如何做到实时在线备份的?
以及xtrabackup是如何做到带上master的复制点的信息的?
当前xtrabackup做增量备份的时候有何缺陷?
能全部回答出来的没有一个,不过没有关系,只要回答出mysqldump或者xtrabackup其中一个的也可以。
11关于有丰富的线上恢复经验的就问你现在线上数据量有多大,如果是100g,你用mysqldump出来要多久,然后mysql进去又要多久,如果互联网不允许延时的话,你又怎么做到恢复单张表的时候保证nagios不报警。
如果有人说mysqldump出来1个小时就ok了,那么我就要问问他db服务器是啥配置了,如果他说mysql进去50分钟搞定了,那么我也要问问他db机器啥配置了,如果是普通的吊丝pcserver,那么真实性,大家懂得。
然后如果你用xtrabackup备份要多久,恢复要多久,大家都知道copy-back这一步要很久,那么你有没有办法对这一块优化。
先想到这么多,可能有朋友就好心提醒了,你mysqldba招聘好了没有,如果没有招聘好,万一人家看到这里,全部准备好,那不相当于作弊啊?
我想说的是,我只是说出了想问的知识点,我可没有说答案啊,如果能自己找出所有准确答案的,那也挺不错了,至少这探索精神是有的,不过就算过了我这一关基础知识面试,别忘了,上面还有比我更厉害的dba,他会继续ko你的,他问的东西就比较深入了,要过那一关挺不容易的,要不然刚开始一个月他面试了10多个全部被他pass了,然后他说好麻烦啊先让我把把关把不合格的pass掉,
让他省点时间,哈哈,所以我不用担心的。
当然可能是我们公司也比较弱吧,毕竟目前不能跟ali,tx,baidu
等真正的mysq