收藏 分销(赏)

计算机基础知识面试题库.docx

上传人:精**** 文档编号:4713314 上传时间:2024-10-10 格式:DOCX 页数:62 大小:739.79KB 下载积分:16 金币
下载 相关 举报
计算机基础知识面试题库.docx_第1页
第1页 / 共62页
计算机基础知识面试题库.docx_第2页
第2页 / 共62页


点击查看更多>>
资源描述
计算机基础知识面试题库 资料仅供参考 对于项目 1. 明确你的项目到底是做什么的,有哪些功能 2. 明确你的项目的整体架构,在面试的时候能够清楚地画给面试官看而且清楚地指出从哪里调用到哪里、使用什么方式调用 3. 明确你的模块在整个项目中所处的位置及作用 4. 明确你的模块用到了哪些技术,更好一些的能够再了解一下整个项目用到了哪些技术 操作系统 1. 操作系统的四大特性: a) 并发性 b) 共享性 c) 虚拟性 d) 不确定性 2. 请叙述一下并发和并行两个概念的区别? a) 并行是指两个或多个事件在同一时刻发生,并发是指两个或多个事件在同一时间间隔内发生。 3. 什么是进程?什么是线程? a) “进程是一个可并发执行的,具有独立功能的程序关于某个数据集合的一次执行过程,也是操作系统进行资源分配和调度的独立单位”。进程是资源分配的基本单位。 b) 线程也称为轻量级进程(LWP),是程序执行流量的最小单位,它是进程的一个实体,是系统独立调度和分派处理机的基本单位。线程是操作系统调度的最小单位。 4. 进程和线程的区别?从调度、并发性、拥有资源和系统开销四个方面来比较: a) 调度。在引入线程的操作系统中,把线程作为调度和分派CPU的基本单位,把进程作为资源分配的基本单位,显著提高了并发程度。由于系统调度的基本单位是线程,因此每个进程至少创立一个线程,否则无法被调度。 b) 并发性。多线程能够提高服务的质量,在一个线程阻塞时,还有其它线程提供服务。 c) 拥有资源。进程是拥有资源的独立单位,线程自己不拥有系统资源,而是共享进程的资源(包括代码段、数据段即系统资源等)。 d) 系统开销。进程切换的开销远远大于线程切换的开销,进程的切换需要保存很多现场,但线程只需要保存和设置少量的寄存器内容,不涉及存储器管理方面的操作。 5. 进程的特征: a) 动态性:进程是动态产生和动态消亡的,有其生存周期。 b) 并发性:一个进程能够与其它进程一起向前推进。 c) 独立性:一个进程是一个相对完整的调度单位。 d) 异步性:每个进程都已相对独立、不可预知的速度向前推进。 e) 结构性:为了控制和管理进程,系统为每个进程设立一个进程控制块(PCB)。 6. 进程有几种状态? a) 就绪状态 b) 运行状态:单CPU环境下,系统处于运行状态的进程最多只有一个。 c) 阻塞状态 7. 进程的组成: a) 程序: b) 数据集合:进程独有 c) 进程控制块(PCB):它和进程一一对应,PCB是操作系统能感知进程存在的唯一标识,操作系统正是经过管理PCB来管理进程的。系统创立进程时,为每个进程分配PCB,进程执行完成后,系统释放PCB,进程也随之消亡。 8. 进程的切换: a) 进程上下文包含用户级上下文、系统级上下文、寄存器上下文 b) 进程上下文切换是核心态的切换,不发生在用户态。 c) 用户态到核心态之间的转变是CPU模式的改变。模式切换不同于进程切换,并不引起进程状态的改变。 9. 为什么会提出线程这个概念?进程的缺点是什么? a) 进程切换开销大 b) 进程通信代价大 c) 进程之间并发性粒度粗,并发度不高 d) 不适合并行计算和分布式并行计算的要求 e) 不适合客户-服务器计算的要求 f) 操作系统中引入进程的目的是为了使多个程序并发执行,改进资源的利用率以提高系统的吞吐量。 10. 线程的分类: a) 用户级线程 – ULT,优点是线程切换不需要系统状态的转换,每个进程能够使用专门的调度算法来调度线程,不需要依赖操作系统底层的内核。缺点是父进程阻塞会导致线程全都阻塞,不能真正的并行。Java的线程就是一种用户级的线程。 b) 内核级线程 – KLT,优点是同一个进程内多个线程能够并行执行,缺点是线程状态转换时内核态的任务,一般很慢。 c) 混合式线程 – 上两种的结合,有良好的效果。 11. 进程控制块的作用?它是如何描述进程动态性质的? a) PCB是系统感知进程存在的唯一标志,是进程动态特性的集中反映,和进程一一对应,操作系统经过管理PCB来管理进程。 b) 进程控制块包含进程描述信息,控制信息,和资源管理信息三类。这些信息的变化反映进程的动态性质。 12. 操作系统内核都包括哪些内容? a) 一是支撑功能,包括中断处理,时钟管理和原语操作等,二是资源管理功能,包括进程管理,存储器管理和设备管理等。 13. 处理机调度的三个分类? a) 高级调度 – 作业调度 b) 中级调度 – 交换调度(内存和硬盘之间的交换) c) 低级调度 – 进程调度(操作系统的核心) d) 高级调度发生在创立新进程时,它决定一个进程能否被创立,或者是创立后能否被设置成就绪状态,以参与竞争处理器资源;中级调度反映到进程状态上就是挂起和解除挂起,它根据系统的当前符合情况决定停留在主存中的进程数;低级调度则是决定哪一个就绪进程或线程占有CPU运行。 14. 批作业调度算法 a) 先来先服务 b) 最短作业优先 c) 响应比高者优先 d) 优先级算法 15. 进程调度的方式: a) 非剥夺方式(非抢占式方式):优点是简单、易实现,系统开销小。缺点是不太灵活,难以满足紧迫任务必须立即执行的要求。实时系统不宜采用这种调度方式。 b) 可剥夺方式(抢占式方式):优先权更高的进程优先执行。 16. 进程调度的算法: a) 先来先服务算法 b) 最短优先算法 c) 优先级算法:优先级高的先执行。能够采用剥夺或非剥夺,剥夺方式更能反映优先的特点,可是会造成无穷阻塞和饥饿现象。 d) 轮转算法:基本思想是系统把所有就绪进程按先来先服务的原则排成一个队列,且规定一个较小的时间单元,称为时间量或时间片,按时间片把CPU轮流分配给进入就绪队列的第一个进程使用,当进程的时间片使用完后,产生一个时钟中断,剥夺该进程的执行,将它送到就绪队列的队尾,等待下次调度。轮转算法专门为分时系统设计。 e) 多级队列调度算法:根据不同的进程,分配到不同的队列中,实行不同的调度算法。一般按照优先级分成多个队列,高优先级的任务先做。 f) 多级反馈队列调度算法:按优先级分配队列,可是优先级越高分配的时间片越小,如果没做完,自动移动到下一级队列继续做。 g) 实时调度算法 17. 操作系统多任务的抢占机制是怎么实现的? 18. 哪种权限许可用户进入一个文件系统的目录?Read,Execute,Write,Access Controll 19. Linux32位系统,应用程序最多能分配的内存大小? 20. sleep和wait的区别? 21. Win32下线程的基本模式? 22. 进程之间的关系? a) 竞争关系:由于进程之间不知道彼此的存在,而使用了同一份资源,就会造成竞争。资源竞争会出现饥饿和死锁。 b) 协作关系 23. 什么是临界资源?什么是临界区? a) 临界资源:把一次只允许一个进程使用的资源成为临界资源。(独占性,如打印机,卡片输出机等) b) 临界区:把每个进程中访问临界资源的那段代码从概念上分离出来,将其称为临界区。即临界区是指对临界资源实时操作的程序的代码段。 c) 相关临界区:并发进程中涉及相同临界资源的临界区。相关临界区必须互斥执行。 24. 什么是进程互斥? a) 进程互斥是解决进程间竞争关系(间接制约关系)的手段。指任何时刻不允许两个以上的共享该资源的并发进程同时进入临界区,这种现象称为互斥。 b) 相关临界区的管理原则:互斥、空闲让进、有限等待。 25. 进程同步的概念?进程同步指两个或多个进程为了合作完成同一个任务,在执行速度或某些确定的时序点上必须相互协调,即一个进程的执行依赖于另一个进程的消息,当一个进程到达了某一个确定点而没有得到合作伙伴发来的已完成消息时必须等待,知道该消息到达被唤醒后,才能继续向前推进。 26. 进程同步和互斥的关系? a) 进程的互斥实际上是进程同步的一种特殊情况,即主次使用互斥共享资源,也是对进程使用资源次序上的一种协调。进程的互斥和同步统称为进程同步。 b) 进程的互斥是进程间共享资源的使用权,这种竞争没有固定的必然联系,哪个进程竞争到资源的使用权,该资源就归哪个进程使用,直到它不再需要使用时才归还资源;而进程同步中,所涉及的共享资源的并发进程间有一种必然的联系,当进程必须同步时,即使无进程在使用共享资源,尚未得到同步消息的进程也不能去使用该资源。 27. 信号量机制(PV操作): a) 信号量机制的实现原理是两个或多个进程能够利用彼此间收发的简单信号来实现正确的并发执行,一个进程在收到一个指令信号前,会被迫在一个确定的或者需要的地方停下来,从而保持同步或互斥。 b) 用信号量机制解决进程的同步和互斥问题有如下三个步骤: i. 分析进程之间的制约关系 ii. 设置信号量 iii. 实施P、V操作 28. 同步的实现机制: a) 临界区:经过多线程的串行化来访问公共资源或者一段代码,速度快,适合控制数据访问。 b) 互斥量:采用互斥对象机制,只有拥有互斥对象的线程才有访问公共资源的权限,因为互斥对象只有一个,因此能够保证公共资源不会同时被多个线程访问。 c) 信号量:允许多个线程同时访问同一资源,可是需要限制同一时刻访问此资源的最大线程数目。信号量对象对线程的同步方式与前面几种方法不同,信号允许多个线程同时使用共享资源,这与操作系统PV操作相似。 d) 事件(信号):经过通知操作的方式保持多线程同步,还能够方便的实现多线程的优先级比较的操作。 29. 经典的同步问题: a) 生产者消费者问题 b) 读者-写者问题(读者优先:信号量+读进程计数器rc;弱写者优先:信号量+读进程计数器rc+排队信号量read;强写者优先:信号量+读进程计数器rc+排队信号量read+写优先信号量write_first) c) 哲学家就餐问题:是在多个线程之间共享多个资源时会不会导致死锁或饥饿的典型模型。解决方案: i. 每个哲学家取得手边的两个叉子才能吃面,即仅当一个哲学家左右两边的叉子都可用时,才允许她拿叉子,否则一个叉子也不取。 ii. 偶数号哲学家先取手边的叉子,奇数号哲学家先取右手边的叉子。 d) 嗜睡理发师问题 30. 进程通信的方式: a) 共享存储:消息缓冲 b) 消息传递:信箱 c) 管道通信 31. 产生死锁的原因? a) 进程竞争资源引起的死锁 b) 进程推进顺序不当产生死锁 32. 产生死锁的条件 a) 互斥条件:同时只能有一个进程持有资源 b) 请求和保持条件:一个进程请求资源得不到满足时,不释放占有的资源 c) 不剥夺条件:任何一个进程不能抢夺其它进程占有的资源 d) 循环等待条件:存在一个循环等待链,链中每个进程已获得资源,并分别等待前一个进程持有的资源。 33. 处理死锁的方法: a) 死锁预防:破坏产生死锁条件的任何一个或多个,如静态资源分配策略(2)和按序分配资源策略(4)。 b) 死锁避免:采用银行家算法,每次分配都查看能否找到一种资源分配方法,使得已有的进程能够顺利完成任务,如果有,则分配,否则不分配。 c) 死锁检测和解除:用软件来检查有进程和资源构成的有向图是否存在一个或多个回路。 34. 分页存储管理、段式存储管理和段页式存储管理的基本思想: a) (分页) 利用分页存储管理,允许把一个作业存放到若干个不相邻的内存区域中,减少大碎片。 b) (分段) 段式存储管理支持用户的分段观点,以段为单位进行存储空间的分配。分段存储管理的引入,主要为了方便编程、信息共享和信息保护(有利于程序的运行)。 c) (段页式) 段页式存储管理的基本原理是先将整个主存划分成大小相等的存储块(页框),把用户程序分段,接着为每一段进行分页。 35. 分页和分段的区别? a) 分页是信息的物理单位,与源程序的逻辑结构无关,用户不可见,分页的目的主要是为了减少碎片,提高主存的利用率。分段是信息的逻辑单位,由源程序的逻辑结构来决定,目的是更好地满足用户的需求。 b) 页的大小固定且由系统确定,而段的长度不固定,由用户程序决定。 c) 分页的作业地址空间是一维的(线性地址空间),分段的作业地址空间是二维的(段名和段内地址)。 36. 缓存的局部性原理:根据研究,在较短的时间内,程序的执行会局限于某一个部分,则能够根据当前程序运行的位置,推测可能执行的程序,预先加载,来达到缓存的目的。(虚拟内存的实现) 37. RAID技术: a) RAID 1:两个磁盘互相备份,安全性最好,但磁盘利用率50%,最低。 b) RAID 2:采用汉明码做出错校验,按位交叉存取,用于大数据的读写,但冗余信息开销大,已被淘汰。 c) RAID 3:位交织奇偶校验,使用一个磁盘做奇偶校验,数据分段存储在其余磁盘中,一旦有损坏,能够利用奇偶校验来重建数据,但校验盘损坏则没救,磁盘利用率n-1。 d) RAID 4:块交织奇偶校验,按块存取,能够单独对某个盘进行操作,一次操作只涉及数据盘和校验盘,不适合随机分散的小数据 e) RAID 5:块交织分布式奇偶校验,同样以数据校验位来保证数据的安全,不同于校验盘,它将数据段的校验位交互存放于各个硬盘,则任何一个硬盘损坏,都能够根据其它硬盘上的校验位来重建损坏的数据,磁盘利用率n-1. 38. SPOOLing系统? a) 在内存和硬盘中间建立缓冲区,在内存写入硬盘的过程中,先写入缓冲,等到CPU空闲时,才从缓冲区写入硬盘。 39. 同步和异步有什么不同?各自的优势? 40. 什么是线程?线程的基本状态? 41. synchronized和Lock的异同? 42. 什么是序列化?什么是持久化?什么是串行化?transient的用法?哪些字段需要标记transient? 43. synchronized关键字的用法? 44. 什么是守护线程?举一个守护线程的例子? 计算机网络 1. OSI模型及其各层次的作用?TCP/IP模型各层次及协议? 2. 数据链路层和MAC层(介质访问控制层)? 3. 计算机网络协议、接口和服务的概念? 4. 数据链路层:流量控制、可靠传输和滑动窗口机制。 5. 数据链路层设备:网桥和局域网交换机 6. 网络层的功能:异构网络互联、路由与转发、拥塞控制 7. 路由算法:距离-向量路由算法、链路状态路由算法、层次路由 8. IPv4内容:分组、NAT、子网划分和子网掩码 9. ARP协议、DHCP协议与ICMP协议 10. 网络层设备:路由器的组成和功能,路由表和路由转发 11. 流量控制和拥塞控制的区别? 12. 传输层的功能?传输层的寻址与端口?套接字? 13. TCP协议和UDP协议?Java实现?UDP首部? 14. TCP段、TCP连接管理、TCP可靠传输、TCP流量控制和拥塞控制 15. TCP的拥塞控制:慢开始、拥塞避免、快重传、快恢复。 16. 应用层:P2P模型?应用层协议:DNS、FTP、EMAIL、MIME、STMP、POP3、HTTP。。 17. CGI?域名解析过程? MySQL数据库 1. INSERT嵌套SELECT 2. MySQL数据类型,int类型长度超出了也不会对数据产生影响,和SQL MODE有关。 3. 一个表中最多只能有一个自增长列。 4. DDL、DML、DCL、DQL语句? a) DDL(数据定义语言):create、drop、alter b) DML(数据操纵语言):insert、delete、update、select c) DCL(数据控制语言):grant、revoke 5. MySQL的其它数据库: a) information_schema数据库存储了数据库对象信息,比如用户表信息、列信息、权限信息、字符集信息、分区信息等。 b) cluster存储了系统的集群信息 c) mysql存储了系统的用户权限信息 d) test是系统自动创立的测试数据库,任何用户都能够使用。 6. 内连接查询即为多表查询,仅选出两张表中互相匹配的记录,外连接则会选出其它不匹配的记录。子查询经常使用in、not in、=、!=、exists、not exists等。表连接很多情况下用于优化子查询。合并记录用union(含distinct)或union all。 7. MySQL数字类型及字节数、日期类型及字节数、字符串类型及字节数。 8. MySQL能够使用REGEXP或RLIKE来使用正则匹配。NULL不能用于"=,<,>,<>等",但能够使用<=>比较NULL。比较时不区分大小写,数字作为浮点数比较。短路与和非NULL结果都为NULL,只有1或NULL为1。 9. MySQL常见函数: a) 字符串CONCAT、INSERT、LEFT、RIGHT、REPLACE、SUBSTRING、LPAD、RPAD、TRIM、REPEAT等。 b) 数值函数ABS、CEIL、FLOOR、MOD、RAND、ROUND、TRUNCATE等。x%y任意为NULL结果都为NULL。产生0~100随机数为select ceil(100*rand()), ceil(100*rand())。 c) 日期和时间函数CURDATE、CURTIME、NOW、UNIX_TIMESTAMP、FROM_UNIXTIME、DATE_FORMAT、DATEDIFF、DATE_ADD等,格式为'%Y-%m-%d %H-%i-%s'。 d) 流程函数IF、IFNULL、CASE WHEN THEN ELSE END、CASE (exp) WHEN THEN ELSE END。 e) 其它函数DATABASE、VERSION、USER、INET_ATON、INET_NTOA、PASSWORD、MD5。 10. MySQL存储类型:MyISAM、InnoDB、BDB、MEMORY、CSV等,只有InnoDB和BDB支持事务,其它都不支持。MySQL默认存储引擎为InnoDB。 11. InnoDB和MyISAM的区别?事务、外键、访问速度、占用空间、存储方式(MyISAM:静态表、动态表和压缩表。InnoDB:共享表空间、多表空间)等方面。 12. MEMORY表使用HASH索引,数据量大小由max_heap_table_size变量来决定,默认16MB。 13. 如何选择合适的存储引擎? a) 以读操作和插入操作为主,少量更新和删除,对事务完整性、并发性要求不高则使用MyISAM引擎。 b) InnoDB则适合于并发要求高的场合,事务完整性要求较高,除了能够有效降低删除和更新导致的锁定,还能够确保事务的完整提交和回滚,适合财务管理系统。 c) MEMORY一般见于更新不太频繁的小表,能够快速得到结果。 d) MERGE组合了MyISAM表,突破了单个MyISAM表的限制,并能够分布在多个磁盘上,有效改进MERGE表的访问效率。 14. 选择合适的数据类型? a) CHAR和VARCHAR - MyISAM:建议固定长度的数据列CHAR。InnoDB:建议使用VARCHAR类型。 b) TEXT和BLOB - 尽量选择满足需求的最小的存储类型、大量删除后为提高性能应定期使用OPTIMIZE TABLE功能进行标的碎片整理。同时能够使用合成的索引(Synthetic)来提高大文本字段的查询性能,此种索引主要利用散列值,只能用于精确匹配的查询"="。不必要时尽量避免检索BLOB和TEXT。单独将BLOB和TEXT分成一张表。 c) 定点DECIMAL和浮点FLOAT\DOUBLE - 定点更精确,字符串存储,而浮点数不精确,而且比较容易出错。 d) 日期类型选择:尽量选择满足需求的最小存储的日期类型,需要记录年份久远,则DATETIME。如果需要不同时区使用,则使用TIMESTAMP。 15. 选择合适的字符集: a) 满足应用支持语言的需求、考虑和已有数据的兼容性、汉字居多能够考虑GBK 2字节,而UTF8 3字节,而英文则应该UTF8 1字节,其它2字节。 b) 如果需要比较,排序等字符运算,则最好选择定长字符集。尽量避免字符集转换。 16. 字符集用来MySQL存储字符串的方式,校对规则用来定义比较字符串的方式。 a) 查看方式:show character set; show collation like "%%"; b) 校对规则_ci大小写不敏感、_cs大小写敏感、_bin基于编码值的比较。 17. MyISAM和InnoDB默认都是BTREE索引,当前不支持函数索引,但支持前缀索引。另外,还支持全文索引。默认情况下MEMORY使用HASH索引,也支持BTREE索引。 18. 索引操作: a) 创立索引 - CREATE [unique|fulltext|special] INDEX index_name [USING index_type] ON tbl_name (index_col_name, ....) b) 修改增加索引 - ALTER TABLE table_name ADD [unique|fulltext|special] INDEX index_name [USING index_type] index_col_name index_col_name = col_name[(length)] [ASC|DESC] c) 能够经过explain select语句查看是否使用了索引。key:xxx为使用索引。 d) 删除索引 - DROP INDEX index_name ON tbl_name 19. MyISAM索引前缀长度1000字节,InnoDB前缀索引长度最长767字节。 20. 设计索引的原则: a) 索引列应选择SELECT WHERE语句后的列和表连接ON子句后的列。 b) 尽量使用唯一索引,分布越分散效果越好,如性别就不适合索引,分布太密集。 c) 尽量使用短索引,查询更快,IO更少。 d) 利用最左前缀。 e) 不要过度索引,会降低使用效率。 f) InnoDB会根据主键、唯一索引或内部列的排序来存储,因此尽量自己指定主键,选择常见列作为主键。另外,InnoDB表的普通索引都会保存主键的键值,因此主键要尽可能选择较短的数据类型,能够有效减少索引的磁盘占用,提高索引缓存效果。 21. HASH索引只能使用在 = 或<=>等式比较时。优化器不能使用HASH索引来加速ORDER BY操作。 BTREE索引能够用在>,<,>=,<=,BETWEEN,!=,<>,LIKE "pattern"(pattern不能以通配符开头)。简而言之,范围查询适用于BTREE,不适用HASH索引。 22. MySQL使用索引,在检索的时候不需要查找所有数据,能快速定位需要的数据。大多数索引存储在BTREE中,只有空间列类型的索引使用RTREE,MEMORY表支持HASH索引。 23. 为什么需要使用视图? a) 使用视图的用户不需要考虑对应表结构,关联条件和筛选条件。 b) 使用视图能够控制用户访问到行列级别。 c) 视图结构确定了,能够屏蔽表结构变化对用户的影响。 24. 视图操作: a) 创立视图 - CREATE [OR REPLACE] [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}] VIEW view_name [{column_list}] AS select_statement [WITH [CASCADED | LOCAL] CHECK OPTION] b) 修改视图 - ALTER [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}] VIEW view_name [(column_list)] AS select_statement [WITH [CASCADED | LOCAL] CHECK OPTION] c) 删除视图 - DROP VIEW [IF EXISTS] view_name [, view_name] [RESTRICT | CASCADE] d) 查看视图 - SHOW TABLES e) 查看视图信息 - SHOW TABLE STATUS [FROM db_name] [LIKE 'pattern'] f) 查询视图定义 - SHOW CREATE VIEW view_name 25. MySQL不允许在创立视图时使用子查询,能够使用查询视图语句来实现。一些视图不可更新: a) 包含聚合函数(SUM、MIN、MAX、COUNT等)、DISTINCT、GROUP BY、HAVING、UNION或者UNION ALL。 b) 常量视图 c) SELECT包含子查询 d) JOIN e) FROM了一个不能更新的视图 f) WHERE子句的子查询引用了FROM子句的表 26. WITH CASCADED|LOCAL CHECK OPTION决定了是否允许更新数据使记录不再满足视图的条件,LOCAL表示只要满足本视图的条件就能够更新,CASCADED必须满足所有针对该视图的所有视图条件才能够更新。 27. 什么是存储过程?它有什么好处?它和函数有什么区别? 28. 存储过程操作: a) 创立存储过程 - CREATE PROCEDURE sp_name ([proc_parameter]) [characteristic] routine_body b) 创立函数 - CREATE FUNCTION sp_name ([func_parameter]) RETURNS type [characteristic] routine_body proc_parameter = [IN | OUT | INOUT] param_name type func_parameter = proc_parameter type = MySQL任意数据类型 characteristic = LANGUAGE_SQL | [NOT] DETERMINISTIC | {CONTAINS_SQL | NOSQL | READS SQL DATA | MODIFIES SQL DATA} | SQL SECURITY {DEFINER | INVOKER} | COMMENT 'string' routine_body = 合法SQL语句 c) 修改函数或存储过程 - ALTER {PROCEDURE | FUNCTION} sp_name [characteristic ...] characteristic = {CONTAINS_SQL | NOSQL | READS SQL DATA | MODIFIES SQL DATA} | SQL SECURITY {DEFINER | INVOKER} | COMMENT 'string' d) 调用存储过程 - CALL sp_name([parameter]) e) 删除存储过程或函数 - DROP {PROCEDURE | FUNCTION} [IF EXISTS] sp_name 29. 首先调用DELEMITER $$将结束符从;改成$$,使得过程和函数中的;不会被解释成语句结束而提示错误。然后从DELEMITER ;将结束符改回来。 30. 存储过程变量的使用: a) DECLEAR last_month_start DATE; b) 变量赋值:SET var_name = expr; SELECT col_name INTO var_name FROM tbl_name.... 31. 存储过程能够使用流程控制语句: a) IF THEN ELSEIF THEN ELSE END IF ... b) 也能够使用CASE WHEN THEN WHEN THEN ELSE END CASE。 c) 循环使用: i. LOOP语句:begin_label: LOOP statement_list END LOOP end_label。 ii. LEAVE语句:能够使用LEAVE跳出循环(LEAVE begin_label)或BEGIN END。 iii. ITERATE语句:同CONTINUE(ITERATE begin_label) iv. REPEAT语句:begin_label: REPEAT statement_list UNTIL search_condition END REPEAT begin_label. v. WHILE语句:begin_label: WHILE search_condition DO statement_list END WHILE end_label; 32. 事件调度器:类似于时间触发器,定时执行任务。 a) 创立语法: CREATE EVENT myevent ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 HOUR                  DO                           UPDATE myschema.mytable SET mycol = mycol +1; b) 事件调度器默认关闭。 c) 禁用或删除事件调度器:ALTER TABLE event_name DISABLE; DROP EVENT event_name; 33. 事件调度器的优势: a) 避免数据库相关的定时任务部署在操作系统层,减少操作系统管理员产生误操作的风险,并方便迁移,迁移过程包括该数据库。 b) 适用于定期收集统计信息、定期清理历史数据、定期数据检查。 c) 复杂的处理适合程序实现。 34. 触发器是与表有关的数据库对象,会在满足一定条件定义时触发,并执行触发器定义的语句集合。 a) 创立触发器 - CREATE TRIGGER trigger_name trigger_time trigger_event ON tbl_name FOR EACH ROW trigger_stmt。  b) 同一张表相同时间相同事件的触发器,只能够定义一个。 c) 触发器时间可分为BEFORE 和AFTER,事件可分为INSERT UPDATE DELETE等。 d) 能够使用INSERT INTO .... ON DEPLICATE KEY UPDATE XXX来测试触发器执行顺序,如果已存在,则先insert 在update after update 。如果不存在,则insert after insert。 e) 删除触发器 - DROP trigger ins_film; f) 查看触发器 - show triggers ; information_schema.triggers表 35. 什么时候使用触发器? a) 不能够直接调用直接返回客户端数据的存储过程。 b) 也不能使用开始或结束事务的语句(start transaction commit rollback语句)。 c) 不要将过多的逻辑写在触发器中,影响CURD效率。 36. MySQL支持MyISAM和MEMORY锁表,对BDB进行锁页,对InnoDB锁行。默认自动锁表和锁行,但有些时候用户会明确锁表或者进行事务的控制,以确保事务的完整性,这样就需要使用事务控制和锁定语句来完成。 37. LOCK TABLES能够锁定用于当前线程的表,UNLOCK TABLES 会释放当前线程获得的任何锁定。 a) 锁定语句 - LOCK TABLES tbl_name [AS alias] {READ [LOCAL] | [LOW_PROORITY] WRITE} ... b) 释放语句 - UNLOCK TABLES 38. MySQL的事务控制: a) SET AUTOCOMMIT - 设置是否自动提交,0表示不自动提交 b) START TRANSACTION/BEGIN - 开始一项新事务 c) COMMIT - 提交事务 d) ROLLBACK - 回滚事务 39. 如果锁表期间如果执行start transaction命令,会有隐含unlock table执行。lock方式锁表,不能使用rollback进行回滚。 40. 所有的DDL语句不能回滚,而且部分DDL语句会造成隐式提交。能够定义savepoint name来实现不同阶段的回滚,rollback to savepoint name。 41. MySQL的分布式事务: a) 只支持InnoDB引擎。 b) 分布式事务还有问题: i. 如果分布式事务prepare时数据库重新启动,重启以后还能够进行提交或回滚,但此时不会写binlog,会造成主从数据库不一致。 ii. 如果客户端连接异常终止,那么数据库会回滚还未完成的分支事务,如果此时分支事务已经执行了prepare状态,其它分支可能已经成功提交, 那么事务会不完整。 iii. 处于prepare状态的事务不记录binlog,如果数据库服务宕机,则会丢失数据。 42. 防止SQL注入的几种措施: a) 使用PrepareStatement绑定变量,将输入的单引号转义输入,避免了SQL注入。 b) 使用应用程序提供的转换函数。 c) 自定义函数进行校验。(正则) 43. MySQL SQL Mode:REAL_AS_FLOAT、PPES_AS_CONCAT、ANSI_QUOTES、GNORE_SPACE、ANSI。STRICT_TRANS_TABLES严格模式。 44. 严格模式不允许插入超过定义长度的数据。 45. SQL Mode常见功能: a) 校验日期数据的合法性,(ANSI模式对非法日期会警告,而TRADITIONAL模式则直接提示日期非法,拒绝插入) b) MOD(X, 0)时,TRADITIONAL模式会抛出警告。 c) NO_BACKSLASH_ESCAPES会将"\"变成普通字符。 d) 提供PIPES_AS_CONCAT,使得"||"能够连接字符串。 46. 常见SQL Mode: a) ANSI - 更符合标准SQL b) STRICT_TRANS_TABLES - 严格模式,能够用在事务表和非事务表,不允许非法日期,不允许超出长度,不正确的值会报错 c) TRADITIONAL - 严格模式,能够应用在事务表和事务表,出现错误马上回滚。 47. MySQL分区:根据一定的规则,数据库把一个表分解成多个更小的更容易管理的部分。逻辑上一个表或者一个索引,实际上会有多个分区,每个分区都是独立的对象,能够独立处理,也能够作为表的一部分处理。 48. MySQL分区的优点: a) 和单个磁盘或者文件系统分区相比,能够存储更多的数据。 优化查询,where查询可能只需要查询几个分区,聚合函数时容易并行处理。 b) 对于不需要的数据能够删除有关分区来达到快速删除的目的。 c) 分散数据查询,以获得更大的查询吞吐量。 49. 创立分区表:CREATE TABLE XXX ()ENGINE=INNODB PARTITION BY HASH( MONTH(birth_date) ) PARTITIONS 6; 50. MySQL的分区类型:RANGE类型(一定范围)、List类型(枚举出值来分区)、Hash类型(根据分区个数分配)、k
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 考试专区 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服