20天没系统整理了,以前是为面试为而学习,前段时间想换个方式,以提高技术实力来学习,但是效率太低。其实我丢了很多东西,巅峰过去了,想要快速捡回来也不容易。时间一天一天过去,是让我感到唯一开心的事了,不想当学生,没意思。也有种被现实击败的感觉,确实不知道怎么办了,反正我尽量想吧,别堕落就行。
1、内连接与外连接区别?
答:(1)内连接:返回两个表中连接条件相同即对应的列值相同的行
(2)外连接:分为左外连接、右外连接、全外连接。以某一个表为基表,去匹配另一个基表,如果列值匹配则返回,如果列值不匹配,保留第一个基表的所在行,并将另一个基表所在的列值设为空。
(3)内连接是保证两个表中所有的行都要满足连接条件,而在外连接中,某些不满足条件的列也会显示出来,也就是说,只限制其中一个表的行,而不限制另一个表的行。
2、触发器的作用?
答:(1)定义:触发器是一种特殊的存储过程,被定义在对特定表或视图中发出insert/update/delete触发事件时满足触发条件而自动执行的语句。
(2)作用:强化约束,维护数据的完整性和一致性,跟踪数据库内的操作从而不允许未经许可的更新和变化。
## 数据库的完整性是为了保证由授权用户对数据库所做的修改不会影响数据一致性的损失。
(3)类型:Insteaf-of触发器、After触发器。代表DML语句之前、之后的意思。
3、什么是存储过程?用什么来调用?
答:(1)定义:一组预编译好了的SQL语句,执行效率高,允许模块化的设计。
(2)SQL Server中使用exec来调用,Mysql中使用call来调用
4、内存溢出和内存泄露的区别?
答:(1)内存溢出 out of memory:是指程序在申请内存时,没有足够的内存空间供其使用,出现out of memory;比如申请了一个integer,
但给它存了long才能存下的数,那就是内存溢出。
(2)内存泄露 memory leak:是指程序在申请内存后,无法释放已申请的内存空间,一次内存泄露危害可以忽略,
但内存泄露堆积后果很严重,无论多少内存,迟早会被占光。
5、Time_wait等待超时了会怎样?等待2MSL的意义?
答:会出现大量socket处于TIMEWAIT状态。如果客户端的并发量持续很高,此时部分客户端就会显示连接不上。
意义:(1)使最后一个ACK报文段能达到被动关闭的一方(2)使网络中的分组全部消失,避免干扰下一次连接
6、针对写的sql语句怎么优化?(注意是写)
答:(1)select使用明确的字段用来代替*号
(2)对表使用别名
(3)合理添加索引
(4)用内连接代替使用子查询
(5)少使用游标和临时表
7、主键索引和唯一索引区别?(主键索引貌似就是主键约束)
答:(1)一个表的主键索引只能有一个,而唯一索引可以建多个。
(2)主键不可为null,唯一索引可以有一列为null。
(3)主键约束会自动创建聚集索引,唯一约束会自动创建一个非聚集索引
8、什么是事务?什么是锁?
答:(1)一个事务被定义为作为一个单元执行的符合所谓ACID属性的一系列的操作。
事务是单个的工作单元,在事务中可以包含多条操作语句;如果对事务执行提交,该事物中进行的所有操作均会提交,如果事务遇到错误而被取消或回滚,则事务的所有操作均会被清除,数据恢复到事务执行前的状态。
(2)锁是用来防止其他用户修改当前还没完成事务中的资源的一种机制。锁的类型有:排他锁、共享锁、更新锁、意向锁等。
9、什么叫视图,与表有什么区别吗?游标又是什么?
答:视图的定义:将预定义的查询存储成数据库中的对象称为视图。
视图与表的区别:(1)视图是虚表,它不存放数据,只存放查询的定义,而表存放实际的数据
(2)可以通过视图修改数据,但是有限制条件(where语句),而表可以直接修改。
(3)可以在视图上建立索引,但是有限制条件,而表可以直接建立索引。
游标的定义:为了方便对结果集(定义select语句所返回的数据行集合)中单独的数据行进行访问。游标包括游标结果集和游标位置两部分。
10、数据库对象有哪些,NULL意味着什么?
答:表格、视图、用户自定义函数、存储过程、触发器。NULL代表着unknown未知,而不是所谓的(空字符串)。
11、你可以用什么来确保表格里的字段只接受特定范围里的值?那么完整性又有哪些?
答:check约束,以及触发器(正如触发器的作用所体现的)。完整性:实体完整性、域完整性、自定义完整性、参照完整性。
12、什么是相关子查询?如何使用这些查询?
答:相关子查询指的是查询中再查询,通常是以一个查询作为条件来供另一个查询使用,查询里包含的子查询会真正请求外部查询的值。嵌入IN、exists语句使用
13、为什么使用索引能提高查询性能0?使用索引查询一定能提高查询的性能吗?
答:提高查询性能的原因:对原始记录的排序情况,相当于一个多级目录的树形结构。
不一定。原因:(1)全表扫描可能比使用索引查询速度快。
(2)对于那些定义为text, image和bit数据类型的列使用索引无用。这是因为,这些列的数据量要么相当大,要么取值很少。
(3)当修改性能远远大于检索性能时,因为彼此矛盾,使用索引无用。
(4)对于那些只有很少数据值的列,使用索引无用。
14、事务的分类有哪些?数据库的整体结构可分为?
答:事务类型:显示事务、自动提交事务、隐式事务、批处理范围事务。
数据库的结构:网状、层次型、关系型
15、关系数据库有几种实体之间的关系?存储过程的种类有哪些?
答:1对1,1对多,多对多。
1)、系统存储过程:以sp_开头,用来进行系统的各项设定.取得信息.相关管理工作, 2)、扩展存储过程以XP_开头,用来调用操作系统提供的功能 3)、用户自定义的存储过程,这是我们所指的存储过程
16、有一个人事系统数据库,人员在入职的时候,往人员表中插入数据,现要求人员入职的同时,讲该人员登记到考勤表和薪资表,可以不可以实现,用什么技术实现!
答:可以,使用触发器,在人员数据插入到人员表的后,使用触发器技术更新到考勤表和薪资表即可。
17、什么是E-R模型?E-R模型的主要组成有哪些?
答:实体联系图(E-R图)是用来描述现实世界中概念模型的一种著名方法。E-R模型主要实体集、属性和联系的方法组成。
18、SQL Server 的字符型系统数据类型主要包括
答:char、varchar、text、nchar等
19、cookie和session的区别?(这个会更详细点)
答:(1)session对象的状态信息保存在web服务器的缓存中,cookie对象的状态信息保存在客户端的硬盘中
(2)session与会话相关,在会话的整个生存期中存在,不会被主动丢弃,而cookie与用户相关,在一定时间内持久化存储,可以跨浏览器共享数据
(3)session不会被序列化,不会发生服务器与客户端的数据传输,cookie会被序列化,会发生服务器与客户端的数据传输,例如某些网站使用cookie实现记住我的功能。
(4)session具有很高的安全性,而cookie存在安全性和状态过期等问题,黑客可以利用进行cookie欺骗
20、什么是数据库的安全性?如何保证数据库的安全性。(这个不好答)
答:数据库的安全性是指保护数据库以防止不合法的使用所造成的数据泄露、更改或破坏。
(1)对用户的合理授权管理
(2)数据库加密、日志审计
(3)硬件防火墙、以及入侵检测系统IDS/IPS
21、 常见的几种约束有哪些?分别代表什么意思?如何使用?
答:主键约束,外键约束,检查约束,唯一约束,默认约束
约束:在Create table或alter table时加约束,保证数据的完整性和一致性
(1)主键:PRIMARY KEY (主键字段) 保证了实体完整性,一个表只有一个主键,但一个主键可有包 含多个字段,主键字段不能为空
(2)唯一:UNIQUE (约束字段) 保证了实体完整性,一个表只有多个唯一约束,一个唯一约束可有包含多个字段
(3)外键:FOREIGN KEY (外键字段) REFERENCES 主键表(主键字段) 保证了引用完整性,一个表可以有多个外键
(4)检查:CHECK(检查表达式) 保证了域完整性, 一个表中可以有多个检查性约束
(5)默认值:DEFAULT (默认值的表达式或NULL),保证了域完整性,一个表可以有多个默认值约束,但是一个字段只有一个默认值
22、什么是存储过程,他有何优点?
答:存储在服务器上的一组预编译好的SQL代码,它是封装性重复性任务的方法。
存储过程的优点:
(1)提高性能:应用不必重新编译此过程
(2)减轻网络拥塞:客户端直接调用即可,不需要执行大量SQL语句
(3)一致性较好:结果只受传参影响
(4)改善安全机制:可以给用户授权来执行存储过程。
23、请列出4个Mail Server的相关组件,以及其功能是什么?
答:(1)MUA:邮件用户代理,它是客户端的应用程序,为用户转发邮件到邮件服务器的(即MTA)。
(2)MTA:邮件传输代理,例如sendmail和postfix,使用SMTP协议,在发送邮件服务器与接收邮件服务器之间转发邮件,
(3)MDA:Delivery 邮件投递代理,就是将接收邮件服务器的邮件,放置到本机账户下的邮件信箱( Mailbox )中
(4)MRA:Retrieve 邮件检索代理,使用POP3或者IMAP协议,从邮件信箱中取出来返回给用户显示的。
24、请说出邮件服务器的工作原理?(不好说,步骤太冗长,能画图最好)
答:基于C/S模式,SMTP的25端口,POP3协议的110端口。
(1)用户A编辑完一封邮件后,用户代理MUA使用SMTP协议将该邮件发送给管理本地域的邮件服务器mail.a.org,该邮件服务器经过域名解析,先查MX记录找到mail.b.org,再根据A记录找到关于mail.b.org的IP地址
(2)然后该MTA使用自己本地的SMTP协议进行邮件转发到目的邮件服务器,目的邮件服务器发现是发往被域的,于是交给MDA投递代理到对应用户的油筒中,然后P0P3服务器使用POP3协议读取该邮筒的邮件,使用MRA邮件检索协议交给目的用户B。
25、小明访问互联网的网关是192.168.1.1,访问局域网段192.168.2.0的网关是192.168.1.254,怎么操作才能让他既能访问Internet又能访问公司内网?
答:route add -net 192.168.2.0 netmask 255.255.255.0 gw 192.168.1.254 >>/etc/rc.local
route add default gw 192.168.1.1 >>/etc/rc.local
26、谈谈你对syslog.conf的认识?如果loglevel=err,在日志文件error_log中发现什么样的错误日志?
答:认识:(1)linux使用syslogd作为日志监控进程,配置文件是/etc/rsyslog.conf,其中格式定义规则为设备.优先级 处理方案
(2)设备定义了日志消息的范围,比如local0-local7,kern(内核信息)、lpr(打印服务),mark(生成时间戳),*代表处了mark以外的所有功能。
(3)优先级定义消息的紧急程度,如emerg(不可用)、alert(警告需要立即被修改)、crit、warning、info、notice(重要信息)、err
(4)格式中的处理方案可以代表日志文件的路径或者终端设备比如/dev/console等
错误日志:如果Loglevel=err,错误日志文件中会出现alert警告,以及crit紧急情况。
27、介绍下计算机网络中的ICMP协议?有哪几种报文(此题争议较大,书上说它说IP协议,而闫辉老师说它是传输层协议)
答:事实上,我以前也觉得是网络层协议,后来我想闫辉老师这么权威,应该没错是传输层协议。另一方面,它作为网关向源主机报错的协议,因为网络层不可靠,所以需要ICMP协议,虽然知道可能传输错误,但是解决不了实质问题。ICMP报文是被封装在IP数据包里的,他拥有类型、代码(即类型值)以及数据部分。
类型:(1)终点不可达(2)时间超过(3)参数问题(4)源点抑制(5)重定向(6)Echo request和Echuo reply
28、请简要描述IPv4的数据报格式?并谈谈你对IPv6的认识(哎呀,这么滚瓜烂熟的东西居然卡克了,再敏感的头脑不复习都不行!)
答:IP报头在不加填充选项的时候是20字节,报文格式有版本号,包头长度,优先级(即服务类型),整个数据报长度,协议字段,源IP地址,目的IP地址,以及一些分片标志、TTL和报头校验和。
IPv6:首部固定128位,极大地解决了地址稀缺的问题,不存在ARP协议,因为没有广播,集成了移动性、全球可达性和灵活性,能够实现无状态自动配置,用户一连上就能访问Internet,简单的包头减小处理开销引起的延迟,也没有校验和,对于一些动态路由协议,也进行了开发,比如RIPng、OSPFv3、DHCPv6
29、drop,delete与truncate的区别?
答:(1)drop直接删除表结构;truncate清空表中数据,再次插入时自增长,id又从1开始;delete删除表中数据,可以加where字句
指定删除部分行;
(2)truncate与不带where的delete等价,但是truncate只能删除表,而delete既能删除视图又能删除表;
(3)从执行效率来说,drop>truncate>delete;
(4)当表被TRUNCATE后,这个表和索引所占用的空间会恢复到初始大小,而DELETE操作不会减少表或索引所占用的空间。drop语句将表所占用的空间全释放掉。
30、SQL语句优化。(跟上一期还有点不一样)
答:(1)应尽量避免在 where 子句中使用非等于(!=或<>)操作符,否则将引擎放弃使用索引而进行全表扫描。
(2)应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:
select id from t where num is null 可以在num上设置默认值0,确保表中num列没有null值,然后这样查询:select id from t where num=0
(3)很多时候用 exists 代替 in 是一个好的选择
(4)用Where子句替换HAVING 子句 因为HAVING 只会在检索出所有记录之后才对结果集进行过滤