面试题(2019年2月28日)

JDK/JRE/JVM的关系是什么?

JDK(Java Development Kit)是针对Java开发员的产品,是整个Java的核心,包括了Java运行环境JRE、Java工具和Java基础类库。Java Runtime Environment(JRE)是运行JAVA程序所必须的环境的集合,包含JVM标准实现及Java核心类库。JVM是Java Virtual Machine(Java虚拟机)的缩写,是整个java实现跨平台的最核心的部分,能够运行以Java语言写作的软件程序。

我们开发的实际情况是:我们利用JDK(调用JAVA API)开发了属于我们自己的JAVA程序后,通过JDK中的编译程序(javac)将我们的文本java文件编译成JAVA字节码,在JRE上运行这些JAVA字节码,JVM解析这些字节码,映射到CPU指令集或OS的系统调用。



说出Servlet的生命周期

Servlet生命周期共4个阶段:

 实例化---初始化---服务--销毁

实例化:当用户第一次发送请求当时候,容器判断是否已经创建过servlet对象,由于是第一次,所以没有创建TOMCAT进行创建

初始化:创建完毕,调研init方法初始化

第二次请求,判断已经存在则无需进行实例化喝初始化

服务:初始化完毕,调用service方法,进行doget dopost方法去处理相应当请求

销毁:tomcat关闭,调用destory方法销毁servlet对象



jdbc访问数据库步骤

JDBC编程有6步,分别是

1.加载sql驱动,

2.使用DriverManager获取数据库连接,

3.使用Connecttion来创建一个Statement对象 Statement对象用来执行SQL语句,

4.执行SQL语句,

5.操作结果集,

6.回收数据库资源。


反射的作用和实现?JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。

Java反射框架提供以下功能:

①、在运行时判断任意一个对象所属的类②、在运行时构造任意一个类的对象③、在运行时判断任意一个类所具有的成员变量和方法(通过反射设置可以调用 private)④、在运行时调用任意一个对象的方法

反射最重要的用途就是开发各种通用框架。

很多框架(比如 Spring)都是配置化的(比如通过 XML文件配置JavaBean,Action之类的),为了保证框架的通用性,他们可能根据配置文件加载不同的对象或类,调用不同的方法,这个时候就必须用到反射——运行时动态加载需要加载的对象。


如何处理前台到后台的乱码

方法一:修改tomcat配置,在server.xml中找到<Connector port="8080" protocol="HTTP/1.1"   connectionTimeout="20000"     redirectPort="8443" URIEncoding="UTF-8"/>内容,并将标红的内容加入即可。不过此种方法只能局限于用tomcat的项目中,如果后期项目迁移到其他服务还是会出现乱码问题,所以对项目的迁移性会造成不好影响。


 方法二: 如果是在页面中出现乱码,那我建议在页面有中文数据的参数前加入encodeURI(),例如:encodeURI(‘内存利用率‘)。通过此方法对数据进行一次解码就可以解决乱码问题。


方法三:如果是在java后台产生乱码,那可以通过String id = new String(str.getBytes("ISO8859-1"), "utf-8");此方法解决。



存储过程的优缺点

 优点

  1. 运行速度:对于很简单的sql,存储过程没有什么优势。对于复杂的业务逻辑,因为在存储过程创建的时候,数据库已经对其进行了一次解析和优化。存储过程一旦执行,在内存中就会保留一份这个存储过程,这样下次再执行同样的存储过程时,可以从内存中直接调用,所以执行速度会比普通sql快。    

  2.  减少网络传输:存储过程直接就在数据库服务器上跑,所有的数据访问都在数据库服务器内部进行,不需要传输数据到其它服务器,所以会减少一定的网络传输。但是在存储过程中没有多次数据交互,那么实际上网络传输量和直接sql是一样的。而且我们的应用服务器通常与数据库是在同一内网,大数据的访问的瓶颈会是硬盘的速度,而不是网速。

  3. 可维护性:的存储过程有些时候比程序更容易维护,这是因为可以实时更新DB端的存储过程。  有些bug,直接改存储过程里的业务逻辑,就搞定了。 

  4. 增强安全性:提高代码安全,防止 SQL注入。这一点sql语句也可以做到。

  5. 可扩展性:应用程序和数据库操作分开,独立进行,而不是相互在一起。方便以后的扩展和DBA维护优化。

  缺点  

   1. SQL本身是一种结构化查询语言,但不是面向对象的的,本质上还是过程化的语言,面对复杂的业务逻辑,过程化的处理会很吃力。同时SQL擅长的是数据查询而非业务逻辑的处理,如果如果把业务逻辑全放在存储过程里面,违背了这一原则。

   2. 如果需要对输入存储过程的参数进行更改,或者要更改由其返回的数据,则您仍需要更新程序集中的代码以添加参数、更新调用,等等,这时候估计会比较繁琐了。

   3. 开发调试复杂,由于IDE的问题,存储过程的开发调试要比一般程序困难。     

   4. 没办法应用缓存。虽然有全局临时表之类的方法可以做缓存,但同样加重了数据库的负担。如果缓存并发严重,经常要加锁,那效率实在堪忧。

   5. 不支持群集,数据库服务器无法水平扩展,或者数据库的切割(水平或垂直切割)。数据库切割之后,存储过程并不清楚数据存储在哪个数据库中。



左连接/右连接/内连接的区别
  1. 左连接:左边有的,右边没有的为null
  2. 右连接:左边没有的,右边有的为null
  3. 内连接:显示左边右边共有的

数据库索引的作用及优点和缺点

索引就像是书的目录,是与表或视图关联的磁盘上结构,可以加快从表或视图中检索行的速度。索引中包含由表或视图中的一列或多列生成的键。这些键存储在一个结构(BTree)中,使SQL可以快速有效地查找与键值关联的行。

2. 为什么要建立索引,即索引的优点:

①  建立索引的列可以保证行的唯一性,生成唯一的rowId

②  建立索引可以有效缩短数据的检索时间

③  建立索引可以加快表与表之间的连接

④  为用来排序或者是分组的字段添加索引可以加快分组和排序顺序

3. 索引的缺点:

①  创建索引和维护索引需要时间成本,这个成本随着数据量的增加而加大

②  创建索引和维护索引需要空间成本,每一条索引都要占据数据库的物理存储空间,数据量越大,占用空间也越大(数据表占据的是数据库的数据空间)

③  会降低表的增删改的效率,因为每次增删改索引需要进行动态维护,导致时间变长

4. 什么样的表跟列要建立索引:

①  总的来说就是数据量大的,经常进行查询操作的表要建立索引

②  表中字段建立索引应该遵循几个原则:

1)        越小的数据类型通常更好:越小的数据类型通常在磁盘、内存中都需要更少的空间,处理起来更快。

2)          简单的数据类型更好:整型数据比起字符,处理开销更小,因为字符串的比较更复杂,处理起来也更耗时。

3)        尽量避免NULL:应该指定列为NOT NULL。含有空值的列很难进行查询优化,因为它们使得索引、索引的统计信息以及比较运算更加复杂。你应该用0、一个特殊的值或者一个空串代替空值。

4)        对非唯一的字段,例如“性别”这种大量重复值的字段,增加索引也没有什么意义,所以索引的建立应当更多的选取唯一性更高的字段。

③  表与表连接用于多表联合查询的约束条件的字段应当建立索引

④  用于排序的字段可以添加索引,用于分组的字段应当视情况看是否需要添加索引。

⑤  添加多列索引的时候,对应的多条件查询可以触发该索引的同时,索引最左侧的列的单条件查询也可以触发。

⑥  如果有些表注定只会进行查询所有,也就没必要添加索引,因为查询全部只能进行全量搜索即扫描全表。

5. 索引的原理:

索引的原理大致概括为以空间换时间,数据库在未添加索引的时候进行查询默认的是进行全量搜索,也就是进行全局扫描,有多少条数据就要进行多少次查询,然后找到相匹配的数据就把他放到结果集中,直到全表扫描完。而建立索引之后,会将建立索引的KEY值放在一个n叉树上(BTree)。因为B树的特点就是适合在磁盘等直接存储设备上组织动态查找表,每次以索引进行条件查询时,会去树上根据key值直接进行搜索,次数约为log总条数,底数为页面存储数,例如一个100万数据的表,页面存储数为100,那么有索引的查询次数为3次log1000000100,但是全量搜索为100万次搜索,这种方式类似于二分法,但是这个是n分法。

索引对增删改的影响实际数据修改测试:

一个表有字段A、B、C,同时进行插入10000行记录测试

在没有建索引时平均完成时间是2.9秒

在对A字段建索引后平均完成时间是6.7秒

在对A字段和B字段建索引后平均完成时间是10.3秒

在对A字段、B字段和C字段都建索引后平均完成时间是11.7秒

从以上测试结果可以明显看出索引对数据修改产生的影响

原文地址:https://www.cnblogs.com/EveningWind/p/10452925.html

时间: 2024-11-05 19:26:14

面试题(2019年2月28日)的相关文章

2019年1月28日 18:48:10 ----怀疑DDOS或者缓存无垃圾回收功能【附带各知识来源】

今日网吧上网,打开邮件,QQ音乐速度明显比前面慢得非常多,体现出非正常反应.(HTTP,HTTPS) 观察其他机器,发现游戏正常.(TCP,UDP) 我将情况告诉网管,网管联系后台人员,后台人员进行了清理垃圾等操作以后,网速恢复正常反应 缓存垃圾回收,可以重启汇聚层的路由器交换机等.如果重启无效,那么DDOS网吧生意之争将有很大的几率发生.还有一种很大的可能,就是客户开外挂导致的网络攻击(甚至感染整个网吧的域,你的帐号信息被盗也会这样子发生). 如何发现程序及进程等底层的问题?(学术叫计算机取证

2019年4月28日

本周是考核周,写的页面是华为的官网,现阶段页面已经写完了第一面,正在写自适应.写的过程遇到了很多的问题,比如说图片的宽度设置突然不起作用:上边的部分有下滑内容,会把下边的轮播图给挤下去等等很多的问题.自适应我是把它放在了最后去写,其中轮播图我是写成了定宽,所以还要进行改动.昨天晚上的笔试让我感觉到前面学的JavaScript的内容几乎上都忘了,对于this和JSON的理解更是想不起来.下阶段交过考核页面之后就要学习前后端交互知识,和后端的一起写项目,希望自己能在学习新知识的同时复习JavaScr

蔡康永的说话之道——2019年12月15日

.bodyContainer { font-family: Arial, Helvetica, sans-serif; text-align: center; padding-left: 32px; padding-right: 32px; } .notebookFor { font-size: 18px; font-weight: 700; text-align: center; color: rgb(119, 119, 119); margin: 24px 0px 0px; padding:

19.go语言基础学习(上)——2019年12月16日

2019年12月16日16:57:04 5.接口 2019年11月01日15:56:09 5.1 duck typing 1. 2. 接口 3.介绍 Go 语言的接口设计是非侵入式的,接口编写者无须知道接口被哪些类型实现. 而接口实现者只需知道实现的是什么样子的接口,但无须指明实现哪一个接口. 编译器知道最终编译时使用哪个类型实现哪个接口,或者接口应该由谁来实现. 每个接口类型由数个方法组成.接口的形式代码如下: type 接口类型名 interface{ 方法名1( 参数列表1 ) 返回值列表

软考中高项学员:2016年3月28日作业

软考中高项学员:2016年3月28日作业 一.项目沟通管理1.项目沟通管理包括哪些过程?(记)2.阻碍有效沟通的因素有哪些?3.沟通计划编制的第一步是什么?目的是什么?4.沟通管理计划包括哪些内容(8条)5.干系人沟通计划包括哪些内容?(记)6.项目例会的主要议题有哪四条?7.项目内部启动会议.外部启动会议分别要解决什么问题?8.项目总结会议的目的有哪些?9.影响项目沟通的技术因素有哪些?9.常用的四种沟通方式是什么?各有何优缺点?10.信息分发的工具和技术是什么?11.经验教训总结过结果是什么

2014年4月28日 乱侃人际关系,反思学习方式

body{ font-family: "Microsoft YaHei UI","Microsoft YaHei",SimSun,"Segoe UI",Tahoma,Helvetica,Sans-Serif,"Microsoft YaHei", Georgia,Helvetica,Arial,sans-serif,宋体, PMingLiU,serif; font-size: 10.5pt; line-height: 1.5;}

2017年3月28日下午学习日志

2017年3月28日下午复习了高等数学,继续看了张宇高等数学基础班课程视频第一章极限与连续部分极限的计算法则中数列极限的计算和连续与间断,第二遍听课过程中能巩固之前所学内容,不懂的问题得以解决,印象也更加深刻,对复习有很大的帮助,背英语单词100个.

安康5月28日将举办汉江龙舟节暨西康高速公路通车典礼(欢乐中国行-魅力安康,中央三套6月7日首播)

第九届中国安康汉江龙舟节,将于2009年5月28日至30日,在安康隆重举行. 今年举办的第九届中国安康汉江“泸康杯”龙舟节,将把龙舟节开幕式与西康高速公路通车典礼成功对接,央视著名栏目“欢乐中国行—魅力安康”,将尽情展示绿色安康的无限魅力. 欢乐中国行—魅力安康的具体播出时间是:中央三套6月7日晚7点30分. http://space.tv.cctv.com/podcast/huanlezhongguoxing 据悉,西康高速通车后,西安到安康仅需要2-3小时.目前,安康还是陕西唯一一个没有高速

php 学习路线 赵兴壮2014年4月28 日 加油

第一阶段 第一讲,WEB基础     1.1 网站基本知识: 1.2 网络协议介绍: 1.3 B/S与C/S结构的区别: 1.4 WEB编程.网站开发技术介绍.      第二讲,网页设计     2.1 Dreamweaver介绍及使用: 2.2 静态网页HTML语言: 2.3 标题与段落,换行与分割线: 2.4 表格.表单: 2.5 框架.超链接.图片.     实例:1,使用表格进行网页布局设计: 2,使用表单.表格.框架进行系统后台界面设计. 第三讲,DIV+CSS     3.1 CS