Java面试指导,
分享于 点击 4335 次 点评:183
Java面试指导,
Java基础知识面试指导资料来自极客学院的学习
初级JavaWeb面试准备Java基础知识面试指导Java面向对象面试指导JSP面试指导MySQL数据库基础知识面试指导Servlet面试指导Java基础知识必会知识点Java关键字及功能所有的Java关键字都是小写的goto和const是保留关键字,在Java中没有使用true,false,null不是严格意义上的关键字,而是字符常量(literals)程序遇到return语句的时候,将不会执行finally语句Java数据类型8种基本类型byte、short、int、long、float、double、char、boolean8中基本类型占用的字节长度https://blog.csdn.net/ptsx0607/article/details/689517603种引用类型:类,接口,数组8种基本数据类型对应的包装类,被final修饰,不可被继承Integer 、Long、Short、Byte、Character、Double、Float、Boolean、BigInteger、BigDecmailJ2SE5.0后提供了自动装箱与拆箱的功能,所以需要通过包装类来转换提供包装类:是为了在各种类型间转化,通过各种方法的调用。否则你无法直接通过变量转化。基本类型,同C++一样,Java采用了相似的做法,对于这些类型不是用new关键字来创建,而是直接将变量的值存储在堆栈中,因此更加高效
包装器类型:我们知道Java是一个面相对象的编程语言,基本类型并不具有对象的性质,为了让基本类型也具有对象的特征,就出现了包装类型(如我们在使用集合类型Collection时就一定要使用包装类型而非基本类型),它相当于将基本类型“包装起来”,使得它具有了对象的性质,并且为其添加了属性和方法,丰富了基本类型的操作。
另外当需要往ArrayList,HashMap中放东西时,像int,double这种基本类型是放不进去的,因为容器都是装object的,这是就需要这些基本类型的包装器类了。
String和StringBuffer类也是被final修饰的
二者之间的区别:1.声明方式不同,基本类型不适用new关键字,而包装类型需要使用new关键字来在堆中分配存储空间; 2.存储方式及位置不同,基本类型是直接将变量值存储在堆栈中,而包装类型是将对象放在堆中,然后通过引用来使用; 3.初始值不同,基本类型的初始值如int为0,boolean为false,而包装类型的初始值为null 4.使用方式不同,基本类型直接赋值直接使用就好,而包装类型在集合如Collection、Map时会使用到。Java基本运算符Java基本运算符的种类a、算数运算符: + - * / %b、赋值运算符: = += -= *= /= %= &= |=c、关系运算符: < > <= >= == !=d、逻辑运算符:&& || ! e、三目运算符:( ? :)f、字符串连接:+g、位运算 & 位都为1,结果才为1,否则结果为0 | 位只要有一个为1,那么结果就是1,否则就为0 ^ 两个操作数的位中,相同则结果为0,不同则结果为1 ~ 如果位为0,结果是1,如果位为1,结果是0h、移位: << 左移运算符,将运算符左边的对象向左移动运算符右边指定的位数(在低位补0) >> "有符号"右移运算符,将运算符左边的对象向右移动运算符右边指定的位数。使用符号扩展机制,也就是说,如果值为正,则在高位补0,如果值为负,则在高位补1. >>> "无符号"右移运算符,将运算符左边的对象向右移动运算符右边指定的位数。采用0扩展机制,也就是说,无论值的正负,都在高位补0. (PS:x<<y 相当于 x*2y ;x>>y相当于x/2y,从计算速度上讲,移位运算要比算术运算快。如果x是负数,那么x>>>3没有什么算术意义,只有逻辑意义。)
Java基本运算符的优先级口诀: http://lasombra.iteye.com/blog/991662单目乘除为关系,逻辑三目后赋值。
单目:单目运算符+ –(负数) ++ -- 等 乘除:算数单目运算符* / % + - 为:位移单目运算符<< >> 关系:关系单目运算符> < >= <= == != 逻辑:逻辑单目运算符&& || & | ^ 三目:三目单目运算符A > B ? X : Y 后:无意义,仅仅为了凑字数 赋值:赋值=单目、双目、三目运算符的划分 按照操作数的个数运算符操作过程中的类型转换问题
Java基本程序控制语句有三种执行方式:顺序结构、选择结构和循环结构条件选择语句:if...else,swith...case循环语句:while,do...while,for注意while和do...while的区别,for的三个循环条件swith支持的数据类型有:byte,short,char,int以及枚举类型
Java数组Java数组的概念与特点一维数组和二维数组的声明数组初始化的两种方式:静态初始化和动态初始化动态初始化数组必须给出长度,否则将报“缺少数组维数”的错误动态初始化二维数组的时,我们可以只指定第一维的长度尔不指定第二维的当数组中包含的元素是引用数据类型时,必须为每个元素实例化,否则会出现空指针异常
常见Java基础知识陷阱导致一些错误的产生,避免,熟知Java语言的性质并深入了解浮点数运算陷阱float和double不能进行精确运算验证浮点数是否能够精确计算System.Out.Println(2.0-1.1); Console 0.8999999999计算机底层使用的二进制,二进制不能精确的表示浮点数,所以会有一些差异System.out.println(2.0 - 1.1);BigDecimal d1 = new BigDecimal(Double.toString(2.0));BigDecimal d2 = new BigDecimal(Double.toString(1.1));System.out.println(d1.subtract(d2).doubleValue());float和double不能进行精确运算不能简单的使用四舍五入的方法解决上述问题可以使用BigDecimal解决
自增、自减运算符陷阱++与--运算符的规则i++与++i的区别进行增量或减量运算常见错误int j = 0;for (int i = 0; i < args.length; i++) {j = j++;}System.out.println(j);Console 0解析:j=j++先赋值后自增
字符和字符串陷阱字符串与字符拼接规则System.out.println("a" + "b");//两个字符串的拼接System.out.println('a' + 'b');//两个字符的相加,为两个字符的asc码的相加System.out.println("a" + 'b');//字符串加字符,字符先转为字符串,在与字符相加Console ab195ab
返回与退出陷阱try...catch...finally不管try代码块中执行什么样的操作,都要执行finally中的操作return与try..catch执行规则exit()函数与try..catch执行规则
public static void main(String[] args) { System.out.println(ReurnFunction()); ExitFunction(); }
public static boolean ReurnFunction() { try { return false; } finally { return true; } }
public static void ExitFunction() { try { System.out.println("Hello"); System.exit(0); } finally { System.out.println("GoodBye"); } }System.exit(0);程序到此结束,finally中任何代码也不会执行
Java基础面试案例1.switch语句能否作用在byte上,能否作用在long上,能否作用String上在switch语句中,开关选项必须是一个整数表达式或一个枚举容量,整数表达式,可以使int类型,或Interger包装类型,由于byte、short、char可以隐含转化为int类型,所以这些类型以及这些类型的包装类,都是可以的;但是long和String都不符合switch语法规定,都不能隐式转化为int类型,不能作用为switch语句上2.列举Java基本数据类型byte,short,int,long,float,double,char,boolean3.true和false是java的关键字吗?true、false、null都不是严格意义上的关键字,而是文字常亮literals4.float f=3.4是否正确不正确,精度类型不准确,应该用强制类型转换,如下所示:float f=(float)3.4;5.try{}里有一个return语句,那么紧跟在try后的finally{}里的code会不会被执行,什么时候执行,在return前还是后?会执行,在return前执行6.error和exception有什么区别error表示恢复不是不可能,但是很困难下一种很严重的问题,比如内存溢出,我们不可能指望程序可以处理这样的情况,exception表示设计和实现的一种问题,它表示如果程序能够正常运行,那么这种情况就不会发生7.Java中的异常处理机制的简单原理和应用这是一个简述题,在回答简述题的时候,应该先回答规则和概念,然后再回答与题目有关的问题,在回答的时候,最好把流程和原理说清楚Java程序违反了Java的语义规则时,Java虚拟机将会将发生的错误就会将发生的错误表示为一个异常。违反语义规则包括2种情况。一种是Java类库内置的语义检查。例如数组下标越界,会引发Ind exOutOfBoundException;访问null的对象时会引发NullPointerException。另一种情况就是Java允许程序员扩展这种语义检查,程序员可以创建自己的异常,并自由选择在何时用throw关键字引发异常。所有的异常都是java.lang.Throwable的子类。8.谈谈final,finally,finalize的区别final修饰符(关键字)一个类被声明为final,意味着它不能再派生出新的子类,也不能作为父类被继承,因此一个类既不能声明为abstract,也不能声明为final的将变量和方法声明为final,可以保障在使用中不被改变;被声明为final的变量,必须在声明时给定处置,而在以后的使用中只能读取不能修改;被声明为final的方法,也只能使用,不能重载
finally在异常处理时提供finally块来执行任何清楚操作如果抛出一个异常,匹配的catch语句就会执行,然后控制流程就会进入finally块
finalize 方法名Java技术允许使用finalize方法,在垃圾收集器将对象从内存中清除出去之前做必要的清理工作,这个方法是由垃圾回收器在确定这个对象没有被应用时,对这个对象进去调用的,它是Object中定义的,因此所有的类都继承了它;子类覆盖finalize方法可以整理系统资源或执行其他清理工作,finalize方法是在垃圾收集器删除对象之前对这个对象调用的9.什么时候使用assert(断言)?断言在软件开发中是一种常用的调试方式,很多开发语言中都支持这种机制,在现实中断言就是在程序中的一条语句,它对一个bool表达式语句进行检查,一个正确的程序必须保证这个bool类型所表达的值是true,如果这个值是false,那么说明这个程序处于不正确的状态下,系统将给出警告或退出,一般来说,断言保证程序最基本的正确性,断言检查通常在开发和测试时候开启。为了提高性能,在软件发布会,断言检查通常是被关闭的
Java面向对象面试指导Java面向对象必回知识点Java的核心是面向对象编程,所有的java程序都是面向对象的。需要看清java的本质,从复杂的表象中寻找普遍的规律,并深入java的核心思想。面向对象的特点封装:隐藏在对象的属性,和实现细节,仅对外提供公共的访问方式继承:在一个类基础上定义一个新类,原有的类叫父类,新生成的类叫子类多态:多态的意思是事物存在多种存在的形态
重载和重写重载:一个类中方法名相同,参数的个数和类型不同重写:子类重写父类,方法名和参数相同
面向对象程序设计方法的优点是:可重用性、可扩展性、可管理性
类与对象知识点:
类与对象的概念类是具体事物的抽象对象是该类事物存在的实实在在的个体
类方法的特点类是具体事物的抽象Object类
匿名对象当对象的方法只使用一次的时候,可以使用匿名对象的方法,这样写代码的时候,比较简便,如果对一个对象进行多个成员的调用,就要给对象起名字;另外一个特点,可以将匿名对象作为实际参数进行传递
构造函数与构造代码块第一构造代码块,是给所有对象进行统一初始化的构造函数,是给对象初始化的第二构造代码块中定义的是不同对象共性的初始化内容
接口接口与接口之间是可以多继承的,接口可以传递一些模块交互的信息,因为没有实际的代码,所以比较安全;接口可以定义一些规范,这些规范是定制的标准,他可以把服务的制定者和实现着分开;
变量的特点总结成员变量与局部变量成员变量定义在个类中,在整个类中都可以被访问成员变量随着对象的建立而建立,存在于对象所在的堆内存中成员变量都有默认的初始化值
局部变量只能定义在局部范围内,比如函数内、语句内局部变量存在栈内存中,局部变量作用的范围结束,空间就会被释放局部变量没有初始化值
实例变量与类变量实例变量随着对象的建立而建立实例变量随着对象的建立而存在于堆内存中
类变量随着类的加载而存在于方法区中
静态变量静态变量是通过static关键字所修饰的
变量的生命周期类变量的生命周期最长,随着类的消失而消失实例变量的生命周期,随着对象的消失而消失
Java面向对象知识点的精华1.抽象、封装、继承、多态是面向对象程序设计中的四个特点2.面向对象的软件开发大体分为:面向对象的分析,面向对象的设计,面向对象的实现分析用户需求,从对象中抽取模型,然后细化模型;设计类,包括类的属性和类间的关系,同时观察是否有可以直接引用已有的类或附件;选定一种面向对象的语言,具体编码实现上一阶段类的设计,应在开发过程中引入测试,完善整个解决方案3.面向对象程序设计方法的优点是:可重用性、可扩展性、可管理性4.类的定义:class前的修饰符分为访问修饰符和非访问修饰符两大类。访问控制符包括public和private。非访问修饰符包括abstract抽象,final最终5.final类是最终类,是不能有子类的类,abstract和final不能同时修饰一个类,因为抽象类本身没有具体对象,需要派生出子类后在创建子类的对象。而最终类不可能有子类。6.构造对象的格式为:类名 对象名=new 构造方法(参数);注意前面是类名,后面是构造方法。注意构造方法没有返回类型,也不能写void的,构造方法主要完成类初始化工作,在编程中不能直接调用,而得用new调用7.如果class前面有public修饰符,则默认构造方法的前面也应该有public修饰符8.类中有static修饰的域或方法,可用类名或对象名访问,否则只能用对象名访问。9.修饰域的访问控制符可以是:public,private,protected,private protected非访问控制符可以是:static,final,volatile易失域10.类变量最本质的特点是:他们是类的域,不属于任何一个类的具体对象实例11.局部变量是在方法体内声明的,只有当方法被调用时他们才存在,因而只能在方法体内使用,不存在访问控制符,也不能声明为静态变量static,但可以声明为final变量。局部变量必须初始化。12.修饰方法的访问控制符可以是:public,private,protected,private protected;修饰方法的非访问控制符可以是;static,final,abstract,native(本地方法),synchronized(同步方法)13.用static修饰的变量或方法都为类成员,类成员可以用类型或实例名访问,实例成员只能用实例名来访问14.如果一个类中含有抽象方法,则此类必须为抽象类,如果抽象类的子类不为抽象类,则子类必须实现父类的所有抽象方法。抽象方法不能用静态方法和最终方法。抽象方法只有函数头的声明,而用分号来代替方法体,没有大括号如abstract void abstractmethod()15.this变量用在一个方法的内部,指向当前对象,当前对象指的是调用当前正在执行的方法的那个对象。super变量直接指向父类的构造方法,用来因引用父类中的变量和方法16.如果引用一个包中的多个类,可以用星号来代替。使用星号只能表示本层次的所有类,而不包含子层次下的类。经常需要用两条语句来引入两个层次的类:import java.awt.*;import java.awt.event.*;17.关于访问修饰符:类中限定为public的成员可以被所有的类访问类中限定问private的成员只能被这个类本身访问类中限定为protect的成员可以被这个类本身,它的子类,以及同一个包中的其他类访问用private protect修饰的成员可以被该类自己访问,也可以被该类的所有子类访问默认访问控制符规定只能被同一个包中的类访问和引用,不能被其他包的类访问18.注意abstract和private,static,final,native不能并列修饰同一个方法abstract类中不能有private修饰的域和方法static方法不能处理非static的域19. 重载方法的参数必须不同,或者参数个数不同,或者参数类型不同。重载的多个方法必须返回相同的数据类型。20.在java中,一个类获取某个接口定义的功能并不是通过直接继承这个接口的属性和方法来实现的。因为接口中的属性都是常量,接口的房都是没有方法体的抽象方法,没有具体定义操作
Java面向对象面试案例分析1.用自己的语言描述面向对象的特征论述题抽象抽象就是忽略一个主题中与当前目标无关的某些方面,以便充分的注意到与当前有关的方面,抽象并不打算了解全部问题,而是选择其中的一部分, 暂时不会顾虑细节抽象包括两个方面,第一方面过程抽象,第二部分数据抽象,
封装封装是把过程和数据包围起来,对数据的访问只能通过已定义的接口,面向对象始于这一基本概念,即现实世界可以描述为一系列封装的对象,这些对象通过一个受保护的接口访问其他对象
继承继承是连接类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表示性的方法,对象的一个新类,可以从现有的类派生,这个过程称为类继承,新类继承原始类的特性,新类称为原始类的派生类,和子类,而原始类称为基类,也叫父类,派生类可以从它的基类哪里继承方法和实例变量,并且类可以修改和添加新的方法,使其更适合特殊的需要
多态多态性,是允许不同类的对象,对同一消息做出响应,多态性包括参数化多态性,和包含多态性,多态性语言具有灵活、抽象、行为共享,代码共享的优势,很好的解决了应用程序函数同名的问题
本体不鞥简单的回答以上四个要点,还要申日的进行解释
2.Overload和Override的区别论述题方法的重写Override和重载Overload是Java多态性的不同表现。重写Override是父类域子类之间多态性的一种表现,重载Overload是一个类中多态性的一个表现。如果子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写了Overriding。子类中的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被“屏蔽”了。如果一个类中国定义了多个同名的方法,它们或有同步的参数个数或有不同的参数类型,则称为方法的重载Overloading3.abstract和interface有什么区别abstract class是抽象类,interface是接口。抽象类用于要创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的情况。接口是抽象类的变体。在接口中,所有方法都是抽象的。抽象类的子类为他们父类中的所有抽象方法提供实现,否则他们也是抽象类。接口只可以定义static final成员变量。接口的实现与子类类似,除了该实现类不能从接口定义中继承行为4.当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?当一个对象实例作为一个参数被传递到方法中时,参数的值就是对该对象的引用。对象的内容可以在被调用的方法中改变,但对象的引用是永远不会改变的5.abstract的method是否可同时是static,是否可同时是native,是否可同时是synchronized?abstract用来声明抽象的方法,抽象方法并没有方法类,不能被直接调用,在子类Overriding后被使用,所以访问被abstract的方法,要依赖具体的对象实例,而被static修饰的方法是被直接访问的,这就引发了逻辑上的冲突;同时还要注意,父类中是静态方法,子类中不能覆盖为非静态方法;native用来声明本地方法,该方法的实现由非java语言实现,比如说c语言,一般用于java语言与外界环境进行交互,或与操作系统交互,native可以与其他java标识符连用,但是abstract除外,因为native方法是有实现体的,只不过这些实现体是非Java的,但是abstract则显然的指明这些方法并没有实现体;synchronized防止多个线程同时调用一个对象的该方法,从synchronized的功能也可以看出该方法可以被直接调用,显然和abstract不能连用,所以abstract和synchronized不能同时使用6.接口是否可继承接口?抽象类是否可实现(implements)接口?抽象类是否可继承实体类(concrete class)?接口可以继承接口,抽象类也可以实现接口,抽象类可继承实体类,但前提是实体类必须有明确的构造方法
JSP与Servlet面试指导JSP与Servlet必会知识点JSP是一种Java服务器端技术,它用于在网页上显示动态内容Tomcat相关技术tomcat基本配置和目录结构JSP的执行过程JSP的页面构成元素 静态内容:html元素、指令、表达式、声明、动作、注释JSP注释静态形式,静态的嵌入一个文件,tomcat服务器在编译阶段完成,当前的JSP页面和要嵌入的文件合并成一个新的JSP文件 ,一起编译成Servlet形式的Java文件动态的,JSP文件和它所需要的文件在语法上是独立的,include动作标记是在JSP运行的时候才处理,不合并成一个新的JSP页面静态和动态的includeJSP标准标签库JSP的九大内置对象Out:一个缓冲的输出流,向客户端输出内容page:当前JSP页面本身,它是java.lang.Object类的实例request:提取浏览器提交的信息response:服务器对客户的请求做出响应,向客户端发送数据session:会话对象,session对象指的是客户端与服务器的一次会话application:实现了用户间数据的共享,可存放全局变量,它开始于服务器的启动。直到服务器的关闭pageContext:JSP页面上下文对象,提供了对JSP页面内所有的对象及名字空间的访问config:代表JSP对应的servlet的配置信息exception:是Throwable的实例,表示的是JSP的异常信息Servlet是服务器端的小程序,用来接受来自网络的请求并作出响应这些请求包括form表单和浏览器发来的其他请求,并且对这些请求作出不同请求sevlet是基于http协议的,是运行在web服务器中EL表达式JavaBeanServlet的生命周期Javaax.Servlet.jsp.tagext包中的类Session与CookieXML的基本概念与使用方法MVC的处理过程M=》model模型,是一个或多个的JavaBean对象,用于存储数据V=》view视图,是一个或多个JSP页面,为模型提供数据显示C=》controler控制器,由Servlet充当,根据视图提交的要求进行操作,并将有关的结果存储在JavaBean中,然后Servlet重定向方式,请求视图当中的某个JSP页面,并更新显示数据,也就是让该JSP页面通过使用JavaBean标记显示控制器存储在JavaBean中的数据MVC处理过程:控制器接收用户的请求,并决定该使用哪个模型进行处理调用模型来处理用户的请求,并返回数据控制器用相应的视图显示模型返回数据,并通过浏览器呈现给用户
JSP与Servlet知识点精华GET与POST请求的区别从安全上看GET弱于POST,GET提交的信息会在地址栏中显示从提交内容大小看GET弱于POST,GET不能大于2KB,POST提交的数据理论上是不受限制的,实际编程中建议不要大于64K从请求响应速度上看GET强于POST,GET要求服务器立即处理请求,而POST请求可能会行程一个队列请求GET调用doGet方法,POST调用doPost方法
Session与Cookie的区别Session将信息保存在服务器上,而Cookie保存在客户端上Session比Cookie更安全,Session比服务器更占资源Session使用了Cookie机制Session是在服务器端,通过SessionID把数据保存在客户端Session用cookie保存客户端数据,所以Session依赖于cookie如果浏览器不支持Cookie,可以通过浏览器重写来实现Cookie只能存String类型的数据,而Session可以存Object类型和简单数据类型的数据
Servlet的生命周期Servlet生命全过程依次为加载实例化初始化处理请求退出服务当客户端第一次向服务器发出servlet请求的时候,web服务器将会创建一个servlet的实例,并且调用servlet的init方法,如果服务器已经存在一个servlet实例,那么将会使用这个实例,然后调用service方法,service方法将会根据客户端的请求方式调用对应的do方法,当servlet从web服务器中删除的时候,web服务器将调用destory方法
Servlet上下文对象servletContext servlet上下文对象它是一个公共区域,可以被所有的客户端共享setAttribute()向公共区域里放入数据getAttribute()从公共区域中取得数据
JSP与Servlet面试案例1.JSP有哪些对象?作用分别是什么?JSP总有9种基本内置组件request来自客户端的请求,它包含来自POST和GET的请求参数,作用范围requestresponse是对客户端的响应 ,它的作用范围是pagepageContext页面的管理属性,作用范围也是pagesession与请求相应的会话,作用范围是sessionapplication是代码段的运行环境,保留了一些必要的运行参数out是传送响应的信息流,作用范围是pageconfig代码段的配置对象page是JSP页面的本身exceptoin是JSP页面运行时的抛出的异常,作用范围也是page
2.JSP有哪些动作?作用分别是什么?JSP共有6种基本动作jsp:include在页面被请求时引用一个文件jsp:useBean寻找或实例化一个JavaBeanjsp:setProperty设置JavaBean的属性jsp:get Property输出某个JavaBean的属性jsp:forward把请求转到一个新的页面jsp:plugin根据浏览器类型为Java插件生成OBJECT或EMBED标记
3.JSP中动态include与静态include的区别?动态include用jsp:include动作实现,它总是会检查所含文件中的变化,适合用于包含动态页面,并且可以带参数。例如:<jsp:include page="includes.jsp" flush="true" />静态include用include伪代码实现,不会检查所含文件的变化,适用于包含静态页面。例如:<%@ include file="included.html" %>
4.include指令与include动作的区别?include指令是编译时语法,也就是在编译的时候,把指令所指向的目标文件拷贝到指令所在的位置,替换指令,最后形成一个文件,在运行的时候只有一个文件include动作指令是运行时语法,包含<jsp:include>动作的文件在执行到这个标签的时候,会转型执行标签所指向的目标文件,执行完目标文件之后,再接着执行标签后的内容,在运行的时候,设计两个文件,就像方法调用一样当一段代码确定会执行的时候,使用 <%@ include %>,当一段代码可能会执行的时候使用<jsp:include>
4.Servlet与JSP有什么区别?JSP是Servlet技术的扩展,本质上是Servlet的简易形式,更强调应用的外表表达JSP编译后是类Servlet,Servlet和JSP最主要的不同点是,Servlet的应用逻辑是在Java文件中,并且完全是从表示层中html中分离出来;JSP的情况是Java和HTML可以组合成一个扩展名为JSP的文件,JSP侧重于视图,而servlet则侧重于逻辑Servlet和JSP的区别如下:1.JSP经编译后就是Servlet,也可以说jsp等同于Servlet2.jsp更擅长页面(表现),servlet更擅长逻辑编程(最核心的区别)3.在实际应用中采取Servlet来控制业务流程,而采用JSP来生成动态网页,在struts框架中,JSP位于MVC设计模式的视图层,而Servlet位于控制层
MySQL数据库基础面试指导MySQL初级必会知识点MySQL数据库的安装、配置和使用MySQL账号的管理创建、删除、修改数据表数据表的索引SQL语句的基本使用常用的MySQL内置函数SQL语句的基本使用SQL的增删改查基本操作SQL的条件查询查询中的order by 查询中的group by和having子句子查询JDBCJDBC主要APIDriver负责与数据库建立连接DriverManager负责管理驱动程序Connection表示与数据库之间的一个会话,不管执行什么操作,都必须先建立连接Statement用于执行SQL语句ResultSet表示查询的结果集合DataSet数据源,用于获取数据库中的连接JDBC连接数据库的过程JDBC结果集的操作DBC批处理JDBC事物
MySQL与JDBC知识点精华管理数据库命令查看数据库 show databases;创建数据库 create datebase 数据库名;使用数据库 use database 数据库名;删除数据库 drop database 数据库名;
数据表管理命令1.修改、添加、删除字段,字段改名,修改字段排列顺序,更改表名;alter table 表名 modify 需要修改字段 修改的类型;alter table 表名 modify 需要添加的新字段名 字段类型;alter table 表名 drop 需要删除的字段名;alter table 表名 change 原来的字段名 新的字段名 新的字段类型;alter table 表名 modify/add 字段名 字段类型 first/after 字段名;alter table 原数据表名 rename 新数据表名;
2.创建有索引的表create index 索引名 on 表名(列表);或者create table 表名(index index1(id,name));
3.插入数据insert into 表名(列表名)values(要插入的数据);或者insert into 表名 set 列表1=数据,列表2=数据;
4.跟新数据update 表名 set 列表1=数据1,列表2=数据2,...[where clause];
5.删除数据delete from 表名 [where clause];
6.查询数据select 列表1,列表2 from 表名1,表名2[where clause];
JDBC连接数据库的基本过程加载驱动程序创建连接对象创建语句对象编写SQL语句使用语句对象执行SQL语句如果有结果集对结果集进行处理关闭结果集(如果有),关闭语句对象,关闭连接对象
事务相关知识点事务指逻辑上的一组操作,组成这组操作的各个单元,要么全都操作成功,要么全都操作不成功。数据库事务相关的命令:start transaction开启事务Rollback回滚事务Commit提交事物
创建JDBC事务的步骤1.设置事务的提交方式为非自动提交 conn.setAutoCommit(false);2.将需要添加的事务放入代码块try...catch块中,利用其异常机制进行处理3.在try块内添加事务的提交操作,表示操作无异常,提交事物conn.commit();4.在catch块内添加回滚事务,表示操作出现异常,撤销事务;conn.rollback();5.设置事务提交方式为自动提交conn.setAutoCommit(true);
MySQ与JDBC面试案例1.在MySQL数据库中记录货币用什么字段类型好使用NUMBERIC和DECIMAL类型。这两种类型可以保存要求精确到和准确度比较高的值,例如与货币有关的数据。当使用这两种类型声明一个数据表字段时,可以指定数据的精度和规模salary DECIMAL(9,2)DECIMAL和NUMBERIC的值是作为字符串类型的值存储的,而不是二进制的浮点数,这样可以保存精度比较高的小数部分,DECIMAL和NUMBERIC的最大值的范围和double类型是一样的,但是NUMBERIC和DECIMAL的实际小数部分可以通过参数设置2.请简述项目中优化SQL语句执行效率的方法1.尽量选择较小的列2.将where中使用频率较高的字段建立索引3.select子句中避免使用“*”4.避免在索引上使用计算,not,in和<>等操作5.当使用一行数据的时候使用limit 16.保证表单数据不超过200w,适时分割表3.事务是什么?事务是访问并可能更新数据库中各项数据项的一个程序执行单元事务具有原子性、一致性、隔离性和永久性的特点原子性指事务 必须是原子工作单元一致性是事务在完成时,必须使所有的数据都保持一样隔离性是由并发事务所做的修改必须和其他并发事务所做的修改隔离持久性是指事务完成之后,它对应系统的影响是永久性的,该修改即使出现系统故障也将一直保持4.在Java中创建一个JDBC访问注册并加载驱动:使用Class.forName(),驱动类就会注册到DriverManage里面并加载到内存中用DriverManager获取连接对象:调用Drivermanager.getConnection()方法并传入数据库连接的URL,用户名及密码,就能获取到连接对象5.有哪些ResultSet1.TYPE_FORWORD_ONLY:这是默认类型,它的游标只能往下移2.TYPE_SCROLL_INSENSITIVE:游标可以上下移动,一旦它创建后,数据库中的数据在发生修改,对它来说是透明的3.TYPE_SCORE_SENSITIVE:游标可以上下移动,如果生成后数据库还发生了修改操作,它是能够感知到的6.JDBC的异常有哪些1.java.sql.SQLException 这是JDBC异常的基类2.java.sql.BathcUpdateExceptoion 当批处理操作执行失败的时候,可能执行这个异常3.java.sql.SQLWarning SQL操作出现的警告信息4.java.sql.DataTruncation 字段值由于某些非正常原因被截断了(不是超过字段类型的长度限制)
相关文章
- 暂无相关文章
用户点评