《通信市场营销》课后部分参考答案(叶伟)_第1页
《通信市场营销》课后部分参考答案(叶伟)_第2页
《通信市场营销》课后部分参考答案(叶伟)_第3页
《通信市场营销》课后部分参考答案(叶伟)_第4页
《通信市场营销》课后部分参考答案(叶伟)_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

声明:答案仅供参考,不作唯一性解答项目一通信市场营销概述一、单选题1、B

2、A3、D4、A5、B6、A7、C8、C9、C10、A二、填空题1、通信设备市场、通信运营市场、通信工程建设市场2、人口、购买力、购买欲望3、人的需要和欲望4、生产观念、产品观念、推销观念、市场营销观念、社会市场营销观念5、消费者(Consumer)、成本(Cost)、便利(Convenience)、沟通(Communication)三、判断题1、错误2、错误3、正确4、正确5、错误6错误7、错误8、错误9、正确10、正确学习领域2Java集合框架课后习题一、填空题1.___有___,___可以___

2.___无___,____不可以__3.__可以______不可以___4.覆盖__________,____添加__________5.___1___,________key_________。6.__HashMap_______和_____LinkedHashMap___7.法___keySet__,___Set____8._____values______,__Collection_____9.____entrySey_______,___Map.Entry____10._____ArrayList______、_____LinkedList______二、单选题1.(D)2.(D)3.B)

4.(A)5.(B)6.(A)7.(A)8.(C)9.(B)10.(D)11.(D)12.(D)

13.(D)14.(D)15.(B16.(C)17.C).18.(B)19.(A).20.(B)三、简答题1.Java集合框架是什么?集合框架的优点有哪些?答题要点:在Java语言中,Java语言的设计者对常用的数据结构和算法做了一些规范(接口)和实现(具体实现接口的类)。所有抽象出来的数据结构和操作(算法)统称为Java集合框架(JavaCollectionFramework)。集合框架是一个用来代表和操纵集合的统一架构,包括所有集合接口、实现和算法。集合框架的部分优点如下:(1)使用核心集合类降低开发成本,而非实现我们自己的集合类。(2)随着使用经过严格测试的集合框架类,代码质量会得到提高。(3)通过使用JDK附带的集合类,可以降低代码维护成本。(4)复用性和可操作性。Java集合框架的基础接口有哪些?答题要点:Collection:代表一组对象,每一个对象都是它的子元素。Set:不包含重复元素的Collection。List:有顺序的collection,并且可以包含重复元素。Map:可以把键(key)映射到值(value)的对象,键不能重复。List、Map、Set三个接口存取元素时,各有什么特点?答题要点:1、List接口(1)存元素:由于List接口元素可以重复,可以多次调用add(Objectobj)方法向List里插入元素。(2)取元素:可以使用迭代器遍历Iterator接口取得所有,逐一遍历各个元素;或者调用get(indexi)来明确说明取第几个。2、Set接口(1)存元素:由于Set集合不允许有重复的元素,不可多次调用add()方法向Set里存元素。(2)取元素:可以使用迭代器遍历Iterator接口取得所有,因为Set集合无序,所以不能通过索引的方式遍历。3、Map接口(1)存元素:调用put(ObjectkeyObjectvalue)方法添加元素。(2)取元素:使用get(Objectkey)方法根据key获得相应的value;使用map.values()方法获得map中的所有的value使用map.keySet();方法获得map中所有的键;也可以使用entrySet()方法通过Map.Entry获得键值对的集合。3.遍历一个List有哪些不同的方式?答题要点:使用for循环使用增强for循环(即foreach循环)使用Iterator迭代器4.HashMap和Hashtable有什么区别?答题要点:HashMap和Hashtable都实现了Map接口,因此很多特性非常相似。但是,他们有以下不同点:HashMap允许键和值是null,而Hashtable不允许键或者值是null。Hashtable是同步的,而HashMap不是。因此,HashMap更适合于单线程环境,而Hashtable适合于多线程环境。HashMap提供了可供应用迭代的键的集合,因此,HashMap是快速失败的。另一方面,Hashtable提供了对键的列举(Enumeration)。一般认为Hashtable是一个遗留的类。5.ArrayList和LinkedList有何区别?答题要点:(1)ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构。

(2)对于随机访问get和set,ArrayList觉得优于LinkedList,因为LinkedList要移动指针。

(3)对于新增和删除操作add和remove,LinedList比较占优势,因为ArrayList要移动数据。

6.Collection和Collections有何区别?答题要点:Collection是一个接口,处于集合体系的最顶层,包含了集合体系的共性。Collections是一个工具类,其中的方法都是用于操作Collection。Java.util.Map的实现类有那些?答题要点:主要有HashMap、HashTable、TreeMap、ConcurrentHashMap、LinkedHashMap、weakHashMap等等。8.HashSet和TreeSet有什么区别?答题要点:HashSet是由一个hash表来实现的,因此,它的元素是无序的。TreeSet是由一个树形的结构来实现的,它里面的元素是有序的。9.写出Java遍历Map所有元素的代码片段。答题要点:(1)使用entrySet()方法Mapmap=newHashMap();Iteratorit=map.entrySet().iterator();while(it.hasNext()){Map.Entryentry=(Map.Entry)it.next();Objectkey=entry.getKey();Objectvalue=entry.getValue();}(2)使用keySet()方法Mapm=newHashMap();for(Objecto:map.keySet()){map.get(o);}10.HashMap的链表结构设计是用来解决什么问题的?答题要点:HashMap的链表结构设计是用来解决key的hash冲突问题的。五、Java程序员面试题1.阐述ArrayList、Vector、LinkedList的存储性能和特性。答题要点:(1)ArrayList和Vector是采用数组方式存储集合中的元素,元素之间内存地址是连续的,此数组元素数大于实际存储的数据,以便增加和插入新数据。(2)ArrayList和Vector都允许直接序号索引元素,可以快速查找;但是插入和删除数据需要移动数据,所以效率低。(3)Vector由于使用了synchronized方法(线程安全),所以性能比ArrayList差。(4)LinkedList是使用链表结构保存集合中的元素,元素之间内存地址不连续。按序号索引数据需要进行向前或向后遍历,即需要进行寻执操作。LinkedList数据插入或删除不需要移动数据,具有较高的修改性能。2.TreeMap和TreeSet在排序时如何比较元素?Collections工具类中的sort()方法如何比较元素?答题要点:TreeSet要求存放的对象所属的类必须实现Comparable接口,该接口提供了比较元素的compareTo()方法,当插入元素时会回调该方法比较元素的大小。TreeMap要求存放的键值对映射的键必须实现Comparable接口从而根据键对元素进行排序。Collections工具类的sort方法有两种重载的形式,第一种要求传入的待排序容器中存放的对象比较实现Comparable接口以实现元素的比较;第二种不强制性的要求容器中的元素必须可比较,但是要求传入第二个参数,参数是Comparator接口的子类型(需要重写compare方法实现元素的比较),相当于一个临时定义的排序规则,其实就是通过接口注入比较元素大小的算法,也是对回调模式的应用(Java中对函数式编程的支持)。3.集合框架中的泛型有什么优点?答题要点:(1)Java1.5引⼊了泛型,所有的集合接⼝和实现都⼤量地使⽤它。(2)泛型允许我们为集合提供⼀个可以容纳的对象类型,因此,如果你添加其它类型的任何元素,它会在编译时报错。(3)这避免了在运⾏时出现ClassCastException,因为你将会在编译时得到报错信息。(4)泛型也使得代码整洁,我们不需要使⽤显式转换和instanceOf操作符。(5)它也给运⾏时带来好处,因为不会产⽣类型检查的字节码指令。4.简述Java集合体系结构(List、Set、Collection、Map的区别和联系)。答题要点:Collection接口存储一组不唯一,无序的对象List接口存储一组不唯一,有序(插入顺序)的对象Set接口存储一组唯一,无序的对象Map接口存储一组键值对象,提供key到value的映射。Key无序,唯一。value不要求有序,允许重复。(如果只使用key存储,而不使用value,那就是Set)5.List、Set、Map之间的区别是什么?答题要点:List接口:可重复,可以为空,有序容器,保持了每个元素的插入顺序,输出的顺序就是插入的顺序。Set接口:不可重复,可以为空,无序容器,无法保证每个元素的存储顺序,TreeSet通过Comparator或者Comparable维护了一个排序顺序。Map接口:以键值对的形式进行存储,键不可以重复值可以重复,键只能有一个null键,值可以有多个null键。6.Map接口提供了哪些不同的集合视图?答题要点:Map接口提供三个集合视图:(1)Setkeyset():返回map中包含的所有key的一个Set视图。(2)Collectionvalues():返回一个map中包含的所有value的一个Collection视图。(3)Set>entrySet():返回一个map钟包含的所有映射的一个集合视图。学习领域3Java反射机制课后习题一、填空题1.__获得classType类的所有声明的字段__2.___反射机制_3._______返回com.yano.reflect.Person的class对象_____4_无参的构造函数_5____指定字段_。二、单选题1.(D)2.(A)3.(A)4.(B)5.(AC)三、简答题1.什么是Java反射机制?答题要点:Java的反射机制是指在程序的运行状态中,可以构造任意一个类的对象,可以了解任意一个对象所属的类,可以了解任意一个类的成员变量和方法,可以调用任意一个对象的属性和方法。2.简述Java反射中API的主要类及作用。答题要点:反射API用来生成JVM中的类、接口或则对象的信息。Class类:反射的核心类,可以获取类的属性,方法等信息。Field类:Java.lang.reflec包中的类,表示类的成员变量,可以用来获取和设置类之中的属性值。Method类:Java.lang.reflec包中的类,表示类的方法,它可以用来获取类中的方法信息或者执行方法。Constructor类:Java.lang.reflec包中的类,表示类的构造方法。3.如何使用Java的反射?答题要点:(1)通过类加载器加载目标类(例如Person类),然后获取该类的Class对象;(2)使用Class对象调用其方法(如getDeclaredMethods)获取该类的相关信息,包括构造函数、成员属性、成员方法、访问控制符等;(3)使用反射API来操作这些信息。4.简述Java反射机制的功能。答题要点:Java反射机制主要提供了以下功能:在运行时能够判断任意一个对象所属的类在运行时构造任意一个类的对象在运行时判断任意一个类所具有的成员变量和方法在运行时调用任一对象的方法在运行时创建新类对象5.哪里用到反射机制?答题要点:JDBC中,利用反射动态加载了数据库驱动程序。Web服务器中利用反射调用了Sevlet的服务方法(service)。Eclispe等开发工具利用反射动态剖析对象的类型与结构,动态提示对象的属性和方法。很多框架都用到反射机制,注入属性,调用方法,如Spring。6.获取目标类的Class对象有哪些方法?答题要点:获取Class对象,有4中方法:(1)Class.forName(“类的路径”);(2)类名.class(3)对象名.getClass()(4)基本类型的包装类,可以调用包装类的Type属性来获得该包装类的Class对象五、Java程序员面试题1.如何通过反射获取和设置对象私有字段的值?答题要点:可以通过类对象的getDeclaredField()方法字段(Field)对象,然后再通过字段对象的setAccessible(true)将其设置为可以访问,接下来就可以通过get/set方法来获取/设置字段的值了。2.利用反射机制有哪些方法可以动态创建对象实例?答题要点:Class对象的newInstance()。使用Class对象的newInstance()方法来创建该Class对象对应类的实例,但是这种方法要求该Class对象对应的类有默认的空构造器。调用Constructor对象的newInstance()。先使用Class对象获取指定的Constructor对象,再调用Constructor对象的newInstance()方法来创建Class对象对应类的实例,通过这种方法可以选定构造方法创建实例。学习领域4Java泛型机制课后习题一、填空题2._____只能读取类型为T的元素__。3.__键_,V代表__值_。4.参数化类型__5.___对象__,6.___DataAccessObject__7.__BaseDao_8.__publicinterface__。9.______这个方法是泛型_____________。10.J_泛型__。___参数__。二、单选题1.(A)2.(D)3.(D)4.A5.(D)6.(A)7.(D)8D9.(D)10.(A)11.(D)12.(C)13.(B)14.(D)15.(D)三、简答题1.Java中的泛型是什么?使用泛型的好处是什么?答题要点:泛型是对Java语言的类型系统的一种扩展,以支持创建可以按类型进行参数化的类。泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。这种参数类型可以⽤在类、接⼝和⽅法的创建中,分别称为泛型类、泛型接⼝、泛型⽅法。泛型的好处是在编译的时候检查类型安全,并且所有的强制转换都是自动和隐式的,提高代码的重用率。性能比较高,用GJ(泛型Java)编写的代码可以为Java编译器和虚拟机带来更多的类型信息,这些信息对Java程序做进一步优化提供条件。Java的泛型是如何工作的?什么是类型擦除?答题要点:泛型通过类型擦除来将变量变为一个类型,编译器在编译时擦出了所有类型相关的信息,所以在运行时不存在任何类型相关的信息,例如List<String>在运行时仅以List来表示。类型擦除指的是一些信息仅存在于代码编译阶段,编译之后进入JVM之前,与反向相关信息会被擦除。什么是泛型中的限定通配符和非限定通配符?限定通配符包括两种:(1)表示类型的上界,格式为:<?extendsT>,即类型必须为T类型或者T子类(2)表示类型的下界,格式为:<?superT>,即类型必须为T类型或者T的父类非限定通配符:类型为<T>,可以用任意类型来替代。4.如何编写一个泛型方法,让它能接受泛型参数并返回泛型类型?答题要点:编写泛型方法需要用泛型类型来替代原始类型,比如使用T,EorK,V等被广泛认可的类型占位符。最简单的情况下,一个泛型方法可能会像这样:publicVput(Kkey,Vvalue){returncache.put(key,value);}5.List<?extendsT>和List<?superT>之间有什么区别?答题要点:List<?extendsT>可以接受任何继承自T的类型的List,而List<?superT>可以接受任何T的父类构成的List。例如List<?extendsNumber>可以接受List<Integer>或List<Float>。6.BaseDAO是用来做什么的?答题要点:BaseDAO一般是提供从数据库增加、删除、修改记录、查询所有记录、查询符合某个条件记录、取得dao某条记录等方法的底层数据操作自定义类。由于我们可能操作多个数据库表,这样就需要为每个表提供一个操作他的类xxDAO,这些DAO继承BaseDAO就可以省略很多重复代码(从数据库增加、删除、修改记录、查询所有记录、查询符合某个条件记录、取得某条记录等方法的代码)。采用DAO模式进行开发时,一般要设计哪些类和接口?DAO接口;实现DAO接口的具体类;数据对象(或叫值对象).8.写出BaseDao泛型接口的完整定义形式。publicinterfaceBaseDao<T>{ publicvoidsave(Tentity); publicvoiddelete(Tentity); publicvoidupdate(Tentity); publicvoidsaveOrUpdate(Tentity); publicTfindById(Serializableid); publicList<T>findAll(); //提供通用修改方法 publicvoidexecuteUpdate(StringqueryName,Object...objects); publicvoidpageQuery(PageBeanpageBean); publicList<T>findByCriteria(DetachedCriteriadetachedCriteria);}五、Java程序员面试题1.为什么要建立BaseDao?答题要点:一般在涉及DAO开发时,若对每张表都编写一套增删改查方法未必有些麻烦,并且不符合编码的基本准则。一般,我们可以将这些功能的所公用的部分封装为一个对象,或者是类,此类是所有DAO的基类,可以称为:BaseDAO。由于我们可能操作多个数据库表,这样就需要为每个表提供一个操作他的类xxDAO,这些DAO继承BaseDAO就可以省略很多重复代码(从数据库增加、删除、修改记录、查询所有记录、查询符合某个条件记录、取得某条记录等方法的代码),以节省开发时间由于此类接收到不同的操作对象,故需泛型的支持,在编译的时候检查类型安全,并且所有的强制转换都是自动和隐式的。使用泛型更容易、更方便、更安全地操作数据库。2.DAO的结构四大组件是指哪些?答题要点:doa接口dao实现类pojo(plainoldjavaobjecct)类dao定位(如何获取实例

spring)3.常见的DAO技术有哪些?答题要点:常用的dao技术有jdbc

spring的DAO以及orm(ibatismybatishibernate)的DAO。学习领域5Java序列化机制课后习题一、填空题1.___Serializable________2.序列化反序列化3.将对象写入流中4.不能5.不能二、单选题1.(D)2(D)3.(A)4.(B)5.(C)6.(B)7.(C)8(D)9.(B)10.(A)三、简答题1.什么是Java序列化?答题要点:Java序列化指的是将Java对象转换为字节流的过程,反序列化指的是将字节流转换为java对象的过程。2.在什么情况下需要序列化?答题要点:以下情况需要使用Java序列化:(1)永久性保存Java对象,保存对象的字节序列到本地文件或者数据库中;(2)网络中进行传递和接收Java对象;(3)进程间传递Java对象。3.Java中实现序列化有哪几种方法?答题要点:(1)实现序列化接口Serializable(2)实现接口Externalizable4.如果你的Serializable类包含一个不可序列化的成员,会发生什么?你是如何解决的?答题要点:如果实现Serializable接口的类包含一个不可序列化的成员,当尝试序列化对象时,这会发生异常。任何序列化该类的尝试都会因NotSerializableException而失败,必须将其声明为静态或瞬态trasient变量,瞬态和静态变量不会得到序列化。5.在Java中的序列化和反序列化过程中使用哪些方法?答题要点:

readObject()、writeObject()、readExternal()

writeExternal()。Java序列化由java.io.ObjectOutputStream类完成。该类是一个筛选器流,它封装在较低级别的字节流中,以处理序列化机制。要通过序列化机制存储任何对象,调用

ObjectOutputStream.writeObject(savethisobject),要反序列化该对象,调用

ObjectInputStream.readObject()方法。调用以

writeObject()

方法在java中触发序列化过程。五、Java程序员面试题1.

如果类中的一个成员未实现可序列化接口,会发生什么情况?关于Java序列化过程的一个简单问题。如果尝试序列化实现可序列化的类的对象,但该对象包含对不可序列化类的引用,则在运行时将引发不可序列化异常

NotSerializableException,这就是为什么我始终将一个可序列化警报(在我的代码注释部分中),代码注释最佳实践之一,指示开发人员记住这一事实,在可序列化类中添加新字段时要注意。2.如果类是可序列化的,但其超类不是,则反序列化后从超级类继承的实例变量的状态如何?Java序列化过程仅在对象层次都是可序列化结构中继续,即实现Java中的可序列化接口,并且从超级类继承的实例变量的值将通过调用构造函数初始化,在反序列化过程中不可序列化的超级类。一旦构造函数链接将启动,就不可能停止,因此,即使层次结构中较高的类实现可序列化接口,也将执行构造函数。正如你从陈述中看到的,这个序列化面试问题看起来非常棘手和有难度,但如果你熟悉关键概念,则并不难。学习领域6Java多线程机制课后习题一、填空题1start2.run3.54.1、继承Thread类;2、实现Runnable接口。5、hread.currentThread();6.main,thread-07.getPriority()和setPriority()8.synchronized同步9.wait()

和notify()

10synchronized二、单选题1(C)2.(D)3.(B4.(A)。5.(B)6.(D)7.(C)8.D)9.(C)10.(B)11(D)12.(D)13.(C)14.(A)15.(D)16.(C)17.(D)18.(D)19.(D)20.(

A)。三、简答题1.什么是进程和线程?两者的区别是什么?答题要点:进程是计算机中的程序关于某数据集合上的一次运行活动,程序一旦运行就是进程。进程是系统进行资源分配和调度的基本单位。线程是进程的一个实体,是进程的一条执行路径。线程是程序执行流的最小单元,是被系统独立调度和分派的基本单位。一个进程可以拥有多个线程,每个线程使用其所属进程的栈空间。进程和线程的区别体现在以下几个方面:(1)地址空间和其他资源(如打开文件):进程间相互独立,同一进程的各线程间共享。某进程内的线程在其他进程内不可见。(2)通信:进程间通信IPC(管道,信号量,共享内存,消息队列),线程间可以直接独写进程数据段(如全局变量)来进程通信——需要进程同步和互斥手段的辅助,以保证数据的一致性。(3)调度和切换:线程上下文切换比进程上下文切换快得多。(4)在多线程OS中,进程不是一个可执行的实体。2.编写多线程类有几种实现方式?它们各自的优缺点是什么?答题要点:有两种实现方式:继承Thread类和实现Runnable接口。继承Thread类的缺点:该类无法继承别的类。实现Runnable接口的缺点:代码复杂3.JDK中线程的生命周期包括哪几种状态?答题要点:线程是一个动态的概念,从创建、运行和变化、消亡(死亡)就是一个生命周期。JDK中用Thread.State类定义了线程生命周期内的6种状态,包含了NEW、RUNNABLE、BLOCKED、WAITING、TIMED_WAITING、TERMINATED。4.线程的优先级范围是什么?如何实现优先级?答题要点:线程的优先级为1-10,一般使用Thread的类常量,不会手动赋值可以通过setPriority()方法去改变它的默认值5.为什么多线程中要引入同步机制?Java中如何实现线程的同步?答题要点:在多线程编程里面,一些较为敏感的数据是不允许被多个线程同时访问的,具有排他性,即互斥。在互斥的基础上,通过同步机制实现访问者对资源的有序访问,确保数据在任何时刻最多只有一个线程访问,保证数据的完整性。多线程的同步方法大体分为以下几种:使用同步关键字(synchronized)使用重入锁类(ReentrantLock)使用特殊域变量关键字(volatile)使用局部变量(ThreadLocal)使用原子变量(AtomicInteger)使用阻塞队列6.线程的调度有哪些方法?各有什么功能?答题要点:(1)分时调度所有线程轮流使用CPU的使用权,平均分配每个线程占用CPU的时间。(2)抢占式调度优先让优先级高的线程使用CPU,如果线程的优先级相同,那么会随机选择一个(线程随机性),Java使用的为抢占式调度。7.Thread类的sleep()方法和对象的wait()方法都可以让线程暂停执行,它们有什么区别?答题要点:sleep()方法(休眠)是线程类(Thread)的静态方法,调用此方法会让当前线程暂停执行指定的时间,将执行机会(CPU)让给其他线程,但是对象的锁依然保持,因此休眠时间结束后会自动恢复,线程回到就绪状态。wait()是Object类的方法,调用对象的wait()方法导致当前线程放弃对象的锁(线程暂停执行),进入对象的等待池(waitpool),只有调用对象的notify()方法(或notifyAll()方法)时才能唤醒等待池中的线程进入等锁池(lockpool),如果线程重新获得对象的锁就可以进入就绪状态8.简述synchronized关键字的用法。答题要点:synchronized关键字主要有以下这3种用法:修饰实例方法,作用于当前实例加锁,进入同步代码前要获得当前实例的锁修饰静态方法,作用于当前类对象加锁,进入同步代码前要获得当前类对象的锁修饰代码块,指定加锁对象,对给定对象加锁,进入同步代码库前要获得给定对象的锁。9.简述线程的基本状态以及状态之间的关系。答题要点:(1)NEW(新建状态),new语句创建的线程对象处于新建状态。(2)RUNNABLE(可运行状态和运行状态),当一个线程对象创建后,其他线程调用它的start()方法,该线程就进入可运行状态。处于这个状态的线程一旦得到CPU的使用权就处于运行状态,执行程序代码。在并发运行环境中,如果计算机只有一个CPU,那么任何时刻只会有一个线程处于这个状态。只有处于可运行状态的线程才有机会转到运行状态。(3)BLOCKED(阻塞状态),阻塞状态是线程等待锁的状态当线程刚进入可运行状态(注意,还没运行),发现将要调用的资源被synchronized(同步),获取不到锁标记,将会立即进入锁池状态,等待获取锁标记进入同步代码块/方法或调用wait()方法后重新进入需要竞争锁。一旦线程获得锁标记后,就转入可运行状态,等待OS分配CPU时间片。线程从阻塞状态只能进入就绪状态,无法直接进入运行状态。(4)WAITING(等待状态),一个线程在等待另一个线程执行动作时处于该状态。(5)TIMED_WAITING(超时等待状态),线程等待指定时间,进入超时等待状态。该状态即停止当前线程,但并不释放所占有的资源。(6)死亡状态,当线程执行完run()方法中的代码,或者遇到了未捕获的异常,就会退出run()方法,此时就进入死亡状态,该线程结束生命周期。10.Java中你怎样唤醒一个阻塞的线程?答题要点:使用sleep()方法、join()方法、wait()和notify()方法11.简述volatile和synchronized的区别答题要点:(1)volatile通过变量的可见性,指定线程必须从主存中读取变量的最新值;synchronized通过阻塞线程的方式,只有当前线程能访问该变量,锁定了当前变量。(2)volatile使用在变量级别;synchronized可以使用在变量、方法、类级别(3)volatile不会造成线程阻塞;synchronized可能会造成线程阻塞(4)volatile不能保证原子性;synchronized能保证原子性(5)volatile标记的变量不会被编译器优化;synchronized标记的变量有可能会被编译器优化(指令重排)。五、Java程序员面试题1.简述synchronized和Lock的区别。答题要点:类别synchronizedLock存在层次Java的关键字,在JVM层面上是一个类锁的释放已获取锁的线程执行完同步代码,释放锁;在线程发生异常时,JVM会让线程自动释放占有的锁。发生异常时候,不会主动释放锁。finally中释放锁,避免死锁的发生。锁的获取假设A线程获得锁,B线程等待。如果A线程阻塞,B线程一直等待。有多个获取锁的方式。可以尝试获取锁,线程可以不用一直等待。锁状态无法判断可以判断锁类型悲观锁机制,即线程获得的是独占锁乐观锁用法区别在需要同步的对象中加入此控制,synchronized可以加在方法上,也可以加在特定代码块中,括号中表示需要锁的对象。一般使用ReentrantLock类做为锁。在加锁和解锁处需要通过lock()和unlock()显示指出。所以一般会在finally块中写unlock()以防死锁。性能区别少量同步synchronize是性能低效的。因为这是一个重量级操作,需要调用操作接口,导致有可能加锁消耗的系统时间比加锁以外的操作还多。大量同步当竞争资源非常激烈时(即有大量线程同时竞争),此时Lock的性能要远远优于synchronized。用途区别可重入,不可中断,非公平可重入,可中断,可公平调度机制使用Object对象本身的wait、notify、notifyAll调度机制使用Condition进行线程之间的调度2.什么是线程池(threadpool)?简要说明ThreadPoolExecutor的策略。答题要点:服务端应用程序(如数据库和Web服务器)需要处理来自客户端的高并发、耗时较短的请求任务,所以频繁的创建处理这些请求的所需要的线程就是一个非常消耗资源的操作。过于频繁的创建/销毁线程,会很大程度上影响处理效率;如果同时执行的线程过多,就有可能导致系统资源不足而产生阻塞的情况。运用线程池能有效的控制线程最大并发数,避免以上的问题。运用线程池对线程进行一些简单的管理。比如:延时执行、定时循环执行的策略等。当一个任务被添加进线程池时,ThreadPoolExecutor的策略是:(1)线程数量未达到corePoolSize,则新建一个线程(核心线程)执行任务(2)线程数量达到了corePools,则将任务移入队列等待(3)队列已满,新建线程(非核心线程)执行任务(4)队列已满,总线程数又达到了maximumPoolSize,就会由上面那位星期天(RejectedExecutionHandler)抛出异常。3.什么是线程死锁?如何避免线程死锁?答题要点:线程死锁:多个线程同时被阻塞,他们中的一个或者全部在等待某个资源被释放,由于线程被无限期的阻塞,因此程序不可能正常终止。产生死锁必须具备的四个条件:(1)互斥条件:该资源任意时刻只由一个线程占用。(2)请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。(3)不剥夺条件:线程已获得的资源在未使用完之前不能被其他线程强行剥夺,只有自己使用完之后才释放资源。(4)循环等待条件:若干个进程之间形成一种头尾相接的循环等待资源关系。如何避免线程死锁(破坏其中一个条件即可):(1)破坏互斥条件:(无法破坏)(2)破坏请求与保持条件:一次性申请所有资源。(3)破坏不剥夺条件:占用部分资源的线程进一步申请其他资源时,可以主动释放它占有的资源。(4)破坏循环等待条件:靠按照顺序来预防。按某一个顺序来申请资源,按相反的顺序来释放资源,破坏循环等待的条件。学习领域7Java网络编程课后习题一、填空题1.Socket技术是构建在__________TCP/IP_____协议之上的。2.Datagrams技术是构建在________UDP_______协议之上的。3.ServerSocket.accept()返回_____Socket__________对象,是服务器与客户端相连。4.InetAddress是用于封装IP地址和DNS的一个类。5.TCP/IP套接字是最可靠的双向流协议。等待客户端的服务器使用ServerSocket类,而要连接到服务器的客户端则使用Socket类。6.Socket(InetAddressaddress,intport)产生___IOException异常,不抛出UnknownHostException异常。7.在TCP/IP协议的传输层除了TCP协议之外还有一个UDP协议。几个标准的应用层协议HTTP,FTP,SMTP…使用的都是TCP协议。UDP协议主要用于需要很强的实时交互性的场合,如网络游戏,视频会议等。8.当我们得到一个URL对象后,就可以通过它读取指定的WWW资源。这时我们将使用URL的方法openStream(),其定义为:InputStreamopenStream();9.URL的构造方法都声明抛弃非运行时异常MalformedURLException,因此生成URL对象时,我们必须要对这一例外进行处理,通常是用try-catch语句进行捕获。10.基于UDP的C/S编程,首先都要建立一个DatagramSocket

对象,用来接收或发送数据报,然后使用DatagramPacket类对象作为传输数据的载体。二、单选题1.URL地址由(C)组成。A.文件名和主机名B.主机名和端口号C.协议名和资源名D.IP地址和主机名2.IP地址封装类是____A_______。A.InetAddress类B.Socket类C.URL类D.ServerSocket类3.InetAddress类中获得主机名的方法是(D)。A.getFile()B.getHostName()C.getPath()D.getHostAddress()4.Java中面向无连接的数据报通信的类有(C)。A.DatagramPacket类B.DatagramSocket类C.DatagramPacket类和DatagramSocket类D.Socket类5.Java网络程序位于TCP/IP参考模型的哪一层(B)A.网络层互联层B.应用层C.传输层网络

D.主机网络层6.以下哪些协议位于传输层(A)A.TCPB.HTTPC.SMTPD.IP7.一个服务器进程执行以下代码:

ServerSocketserverSocket=newServerSocket(80);Socketsocket=serverSocket.accept();intport=socket.getPort();

以下错误的是(B)A.

服务器进程占用80端口。B.

socket.getPort()方法返回服务器进程占用的本地端口,此处返回值是80。C.当serverSocket.accept()方法成功返回,就表明服务器进程接收到一个客户连接请求。D、socket.getPort()方法返回客户端套接字占用本地端口。8.在HTTP响应结果中,哪个状态代码表示响应成功(D)A.404B.405C.500D.2009.如何判断一个ServerSocket已经与特定端口绑定,并且还没有被关闭(B)A.boolean

isOpen=serverSocket.isBound();

B.boolean

isOpen=serverSocket.isBound()&&!serverSocket.isClosed();C.

boolean

isOpen=serverSocket.isBound()

&&serverSocket.isConnected();

D.boolean

isOpen=!serverSocket.isClosed();10.InetAddress类中哪个方法可实现正向名称解析?(C)

A.isReachable()B.getHostAddress()

C.getHosstName()D.getByName()11.Java提供的类InetAddress来进行有关Internet地址的操作。(D)A.SocketB.ServerSocketC.DatagramSocketD.InetAddress12.Java程序中,使用TCP套接字编写服务端程序的套接字类是(B)A.SocketB.ServerSocketC.DatagramSocketD.DatagramPacket13.ServerSocket的监听方法accept()的返回值类型是(C)A.voidB.ObjectC.SocketD.DatagramSocket14.ServerSocket的getInetAddress()的返回值类型是(C)A.SocketB.ServerSocketC.InetAddressD.URL15.当使用客户端套接字Socket创建对象时,需要指定(A)A.服务器主机名称和端口B.服务器端口和文件C.服务器名称和文件D.服务器地址和文件16.使用流式套接字编程时,为了向对方发送数据,则需要使用哪个方法(C)A.getInetAddress()B.getLocalPort()C.getOutputStream()D.getInputStream()17.使用UDP套接字通信时,常用哪个类把要发送的信息打包?(D)A.StringB.DatagramSocketC.MulticastSocketD.DatagramPacket18.使用UDP套接字通信时,哪个方法用于接收数据(B)A.read()B.receive()C.accept()D.Listen()19.若要取得数据包的中源地址,可使用下列哪个语句(A)?A.getAddress()B.getPort()C.getName()D.getData()20.如果在关闭socket时发生一个I/O错误,会抛出(A)异常。A.IOExceptionB.UnknownHostExceptionC.SocketExceptionD.MalformedURLExceptin

三、简答题1.什么是URL?基本的格式是?统一资源定位符(URL,英语UniformResourceLocator的缩写),它的英文简称叫做URL。也被称为网页地址,是因特网上标准的资源的地址。格式:协议类型://服务器地址[:端口号]/路径/文件名[参数=值]2.客户机和服务器模式有什么特点?(1)可实现资源共享。。(2)可实现管理科学化和专业化。(3)可快速进行信息处理。(4)能更好地保护原有的资源。3.Socket类和ServerSocket类的区别是什么?答题要点:Socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄。应用程序通常通过"套接字"向网络发出请求或者应答网络请求。一般来说,ServerSocket是服务器端,Socket是客户端。socket用于呼叫远端机器上的一个端口,主动的发送数据ServerSocket用于在本机开一个端口,被动的等待数据(用accept方法)并建立连接进行数据交互。4.简述TCP与UDP的区别。答题要点:TCP和UDP是OSI模型中的传输层中的协议。TCP提供可靠的通信传输,而UDP则常被用于让广播和细节控制交给应用的通信传输。两者的区别大致如下:TCP面向连接,UDP面向非连接即发送数据前不需要建立连接;TCP提供可靠的服务(数据传输),UDP无法保证;TCP面向字节流,UDP面向报文;TCP数据传输慢,UDP数据传输快;5.简述基于TCP的Socket编程的主要步骤。答题要点:服务器端(server):(1)构建一个ServerSocket实例,指定本地的端口。这个socket就是用来监听指定端口的连接请求的。(2)调用ServerSocket的accept()方法来获得客户端的连接请求,返回的socket实例,即建立了一个和客户端的新连接。(3)通过返回的socket实例调用getInputStream和getOutputStream方法,获取输入输出流,分别调用read()、write()方法用来读和写数据。(4)调用socket实例的close()方法关闭socket连接。客户端(client):(1)创建客户端Socket对象,指定服务端IP和端口,请求服务端连接。(2)通过Socket对象调用getOutputStream()和getOutputStream()方法得到输入输出流对象。通过输入输出流对象,调用对应的read(),write()方法与服务器端进行数据读写,完成与服务器的通信。(3)操作结束后通过Socket类对象调用close()方法关闭与服务器端的连接。简述基于UDP协议编程的开发步骤。答题要点:Java基于UDP编程步骤一般是按照基于UDP的通信模型,分为接收端和发送端。接收端程序的基本步骤:(1)通过DatagramSocket(intport)创建接收端的数据报套接字对象,并绑定指定端口。(2)通过DatagramPacket(byte[]buf,intlength)创建接收端的数据报包对象,指定字节数组和长度用于接收数据报包。(3)调用DatagramSocket的receive(DatagramPacketp)方法,接收数据报包。(4)调用DatagramPacket类对象的getData()方法解析数据报包。(5)关闭DatagramSocket。发送端程序的基本步骤:(1)通过DatagramSocket()或DatagramSocket(intport)创建发送端的数据报套接字对象。(2)通过DatagramPacket(byte[]buf,intlength,InetAddressaddress,intport)创建数据报包对象,即要发送的数据报包,包含:数据、长度、接收端的IP地址和端口号。(3)调用DatagramSocket的send(DatagramPacketp)方法发送数据报包。(4)关闭数据报套接字。6.什么是socket?答题要点:所谓socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄。应用程序通常通过"套接字"向网络发出请求或者应答网络请求。我们开发的网络应用程序位于应用层,TCP和UDP属于传输层协议,在应用层和传输层之间,则是使用套接字来进行分离。Socket本身并不是协议,是应用层与TCP/IP协议栈通信的中间软件抽象层,它是一组接口,是对TCP/IP协议的封装,它把复杂的TCP/IP协议族隐藏在Socket接口后面,使得程序员更方便地使用TCP/IP协议栈。一个Socket套接字与主机地址和端口地址相关联。即一个Socket等于“IP地址+端口号”。7.写出DatagramSocket的常用构造方法答题要点:DatagramSocket();DatagramSocket(intprot);DatagramSocket(intport,InetAddressladdr)其中port指明socket所使用的端口号,如果未指明端口号,则把socket连接到本地主机上一个可用的端口。laddr指明一个可用的本地地址。8.写出在接收端接收数据报的主要语句。答题要点:bytebuf[]=newbyte[n];DatagramPacketpacket=newDatagramPacket(buf,n);Socket.receive(packet);9.建立socket需要哪些步骤?答题要点:(1)调用Socket类的构造函数,建立客户端Socket;(2)处于等待连接的状态,实时监控网络状态,建立服务器端Socket;(3)监听服务器连接;(4)使用Socket的方法来创建输入或输出流五、Java程序员面试题1.写出建立TCP服务器ServerSocket的代码。并说明accept方法有什么特点?答题要点://服务器监听请求;ServerSocketss=newServerSocket(9999);//接受请求:创建了socket;Socketsocket=ss.accept();accept方法,调用这个方法后,服务端一直阻塞在那里,直到有客户端连接进来。2.写出建立TCP客户端Socket的代码。并说明建立Socket后,通过什么方法Socket获得流对象?答题要点://客户端向服务器端发送请求;Socketsocket=newSocket("",9999);//建好连接后,开始传输数据;OutputStreamos=socket.getOutputStream();通过socket的getOutputStream()方法获得流对象。学习领域8Java数据库编程课后习题一、填空题1.URL定义了连接数据库时的协议、_______子协议_______和数据库标识。2.JDBCAPI提供的连接和操作数据库的类和接口位于_______javax.sql_______包和java.sql包中。3.ResultSet对象的______next()______方法表示将光标从当前位置移向下一行。4.一个Statement对象,可以执行多个sql语句以后,批量更新。这多个语句可以是delete、update、insert等或兼有

5.Java数据库操作基本流程:加载数据库驱动、取得数据库连接、执行sql语句、处理执行结果、释放数据库连接。6.接口Statement中定义的execute方法的返回类型是__boolean__。7.executeQuery方法返回的类型是__ResultSet___。8.executeUpdate返回的类型是_int__。9.JDBC的全称是__________JavaDataBaseConnectivity_________________________。10.DAO的全称________DataAccessObject___________________________。二、单选题1.下面是一组对JDBC的描述,正确的说法是____B_______。A.JDBC是一个数据库管理系统B.JDBC是一个由类和接口组成的APIC.JDBC是一个驱动查询D.JDBC是一组命令2.创建数据库连接的目的是________A________。A.建立一条通往某个数据库的通道B.加载数据库驱动程序C.清空数据库D.为数据库增加记录3.要为数据库增加记录,应调用Statement对象的___________C______方法。A.addRecord()B.executeQuery()C.executeUpdate()D.executeAdd()4.PreparedStatement对象的_______C_____方法执行包含参数的动态INSERT、UPDATE、DELETE语句。A.query()B.execute()C.executeUpdate()D.executeQuery()5.ResultSetMetaData对象的________A___________方法返回指定列序号的列名。A.getColumnName()B.getColumnCount()C.getColumnLabel()D.getColumnType()6.下列SQL语句中,哪一项可用executeQuery()方法发送到数据库______C________。A.UpdateB.DeleteC.SelectD.Insert7.下面哪个选项不是客户端的Java应用程序需要完成的工作_________A______。A.与数据库的某个表建立连接B.与特定的数据库建立连接C.发送SQL语句,得到查询结果D.关闭与JDBC服务器的连接8.使用JDBC访问数据库时,下列关于JDBC的说法正确的是(C)。A.Connection接口负责执行SQL语句。B.可以使用Class.forName()方法把JDBC驱动类装载入Java虚拟机中。C.Statement接口由Connection产生负责保存返回的查询结果。D.DriverManager类负责连接数据库并传送数据。9.在Java中,以下关于得到ResultSet对象、PreparedStatement对象、Statement对象的说法,正确的是(A)A.可以使用Statement对象的executeQuery方法返回ResultSet对象B.可以使用Connection对象的createStatement方法获得PreparedStatement对象C.可以使用Connection对象的createStatement方法获得ResultSet对象D.可以使用Connection对象的executeQuery方法返回ResultSet对象10.在下列选项中,哪一个可执行同构的sql语句?(C)A.CallableStatementB.StatementC.PreparedStatement11.JDBC编程的异常类型分为()A.SQLExceptionB.SQLErrorC.SQLFatalD.SQLTruncation12.接口Statement中定义的execute方法的返回类型所代表的含义是(C)A.结果集ResultSetB.受影响的记录数量C.有无ResultSet返回13.JDBC接口Statement中定义的execute()方法的返回类型是(C)。A.ResultSetB.intC.booleanD.受影响的记录数量14.Java程序与数据库连接后,需要查看某个表中的数据,使用下列哪个语句?(B)A.executeQuery()B.executeUpdate()CexecuteEdit()D.executeSelect()15.java程序与数据库连接后,需要修改某个表中的数据,使用下列哪个语句?(B)A.executeQuery()B.executeUpdate()CexecuteEdit()D.executeSelect()16.在Java中,JDBCAPI定义了一组用于与数据库进行通信的接口和类,它们包括在(B)包。A.java.langB.java.sqlC.java.utilD.java.math17.在Java中,使用JDBC开发应用程序时处理步骤正确的是(A)。A.1.加载数据库驱动;2.创建数据库连接;3.执行SQL命令;4.处理结果B.1.加载数据库驱动;2..执行SQL命令;3.创建数据库连接;4.处理结果C.1.创建数据库连接;2.加载数据库驱动;3.执行SQL命令;4.处理结果D.1.创建数据库连接;2.执行SQL命令;3.加载数据库驱动;4.处理结果18.假设Mysql数据库中有表book,包含两个字段:id整型,title字符型。向此表插入数据的Java代码片段如下所示,其中con为已正确获得的连接数据库的Connection对象,则以下描述正确的是(C)PreparedStatementpstmt=con.preparedStatement(“insertintobook(id,title)values(?,?)“);Pstmt.setInt(0,10);Pstmt.setString(1,”Java”);Pstmt.excuteUpdate();A.创建PreparedStatement对象的语句有错误B.向book表插入数据的sql语句有错误C.setInt、setString方法有错误D.PreparedStatement没有executeUpdate()方法19.以下选项中关于DAO模式的说法错误的是(C)A.DAO是“DataAccessObject”的含义,实现对数据库资源的访问。B.DAO模式中要定义DAO接口和实现类,隔离了不同数据库的实现。C,DAO负责执行业务逻辑操作,将业务逻辑和数据访问隔离开来D.使用DAO模式提高了数据访问代码的复用性20.以下选项中关于Java分层开发技术中实体类的说法错误的是(D)A.在分层开发中,不同层之间可以通过实体类来传输数据B.实体类一般对应一个数据库表,其属性和数据库表的字段对应C.实体类最好实现java.io.Serializable,支持序列化机制D.实体类的属性和方法一般均使用public修饰21.为了实现在Java的程序中调用带参数的SQL语句,应该采用那个类来完成(B)。A.Connection类B.PreparedStatement类C.ResultSet类D.Statement类22.下列选项对DBCP数据库连接池描述错误的是:(D)A.initialSize属性,表示初始化连接数目B.maxActive属性设置最大的活动连接数C.maxWait属性,表式连接池中连接用完时,新的请求等待时间D.maxIdle表示最小空闲连接数23.下面关于JSON说法错误的是:(D)A.json是一种数据交互格式B.json的数据格式有两种为{}和[]C.json数据用{}表示java中的对象,[]表示Java中的List对象D.{“1”:”123”,”2”:”234”,”3”:”345”}不是json数据三、简答题1.简述java.sql包中主要类和接口的作用。答题要点:Driver接口,它是所有JDBC驱动程序必须实现的接口。DriverManager类,驱动程序管理器类,用于加载JDBC驱动并创建与数据库的连接。Connection接口,表示与指定数据库的连接。Statement接口,将SQL语句传送给数据库并返回结果。ResultSet接口,针对有返回结果的SQL语句,ResultSet接口用来处理结果。2.简述使用JDBC操作数据库的基本步骤。答题要点:JDBC操作数据库的基本步骤: 加载JDBC驱动程序 获取数据库的连接 创建Statement对象 执行SQL语句 处理sql的返回结果 关闭连接3.常用的数据库操作对象有哪些?这些对象分别用来做什么?答题要点:数据库对象是数据库的组成部分,除了数据库本身外,常见的对象有:表(Table),用来存放数据记录。索引(Index),索引是根据指定的数据库表列建立起来的顺序。视图(View),视图是一个虚拟的表,是由查询数据表产生的。数据库关系图(Databasediagram),描述表之间的关系以及表的行列属性。默认值(Default),对没有指定其具体值的列或列数据项赋予事先设定好的值。规则(Rule),对数据库表中数据信息的限制,其限定的是表的列。存储过程(StoredProcedure),存是为完成特定功能而汇集在一起的一组SQL程序语句,经编译后存储在数据库中的SQL程序。触发器(Trigger),是一个用户定义的SQL事务命令的集合用户(User),是有权限访问数据库的使用者。4.ResultSet对象的作用是什么?该对象的常用方法有哪些?答题要点:ResultSet对象的作用是用来存放查询结果。ResultSet常用方法有:next() 将光标从当前位置向下移动一行,也就是读取下一行previous() 将光标从当前位置向上移动一行,也就是读取上一行close() 关闭ResultSet对象getInt(int) 以int的形式获取结果集,以当前行指定序号的值,以列的编号或者列的名字getInt(String) 以下跟以上一样以此类推getFloat(int) getFloat(String) getString(int) getString(String) getRow() 得到光标当前所指定的行号absolute() 光标移动到row指定的行5.删除、增加、修改和查询记录的SQL语法是什么?其对应的Statement方法又是什么?答题要点:增加记录的SQL语法是:Insertinto表名(字段1,字段2)values('字段1的值','字段2的值');其使用Statement对象的executeUpdate()方法删除记录的SQL语法是:Delete表名where条件;其使用Statement对象的executeUpdate()方法修改记录的SQL语法是:Update表名set字段名=‘赋值名’where条件字段名=‘条件值’;其使用Statement对象的executeUpdate()方法查询记录的SQL语法是:Select*from表名;使用Statement对象的executeQuery()方法6.Statement和PreparedStatement有什么区别?哪个性能更好?答题要点:Statement和PreparedStatement的区别:(1)PreparedStatement接口代表预编译的语句,它主要的优势在于可以减少SQL的编译错误并增加SQL的安全性(减少SQL注射攻击的可能性);(2)PreparedStatement中的SQL语句是可以带参数的,避免了用字符串连接拼接SQL语句的麻烦和不安全;(3)当批量处理SQL或频繁执行相同的查询时,PreparedStatement有明显的性能上的优势,由于数据库可以将编译优化后的SQL语句缓存起来,下次执行相同结构的语句时就会很快(不用再次编译和生成执行计划)。建议使用预编译的PreparedStatement,不但效率高,能够重用,而且安全。7.在进行数据库编程时,连接池有什么作用?答题要点:为了提升系统访问数据库的性能,可以事先创建若干连接置于连接池中,需要时直接从连接池获取,使用结束时归还连接池而不必关闭连接,从而避免频繁创建和释放连接所造成的开销,这是典型的用空间换取时间的策略。8.什么是DAO模式?答题要点:DAO(DataAccessObject)是一个为数据库或其他持久化机制提供了抽象接口的对象,其中声明增删改查方法,当需要和数据源进行交互的时候则使用这个接口,再设计DAO实现类DAOImpl,具体实现DAO接口中声明的数据库表操作方法。使用DAO设计模式可以简化大量代码,增强程序的可移植性。9.简述Java使用statement接口执行sql语句操作的方法答题要点:statement执行sql语句主要有两种方法:(1)对数据库的增、删、改等操作时,使用stmt.executeupdate(sql)执行给定sql语句,分别为insert、update、delete,返回结果为受影响的行数。(2)对数据库作查询时,直接使用stmt.executequery(sql),返回结果为一个resultset结果集。10.什么是JDBC?答题要点:JDBC(JavaDataBaseConnectivity,java数据库连接)是一种用于执行SQL语句的JavaAPI,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。11.什么是第三方组件?答题要点:第三方组件是针对某种软件在应用功能上的不足或缺陷,而由软件编制方以外的其他公司、组织或个人开发的相关组件。第三方组件一般是自定义组件或者用户组件,它们继承自Java中的某些基类,重写或者扩展了一些方法和属性,从而能实现某些新的功能。12.简述第三方组件的使用方法。答题要点:在Java工程项目中使用第三方组件的方法可归纳如下:(1)下载第三方组件相应的依赖包jar包文件。(2)将jar包导入到Java工程项目中。(3)引用jar包的接口、类、方法等编写应用程序。13.JSON是什么?答题要点:JSON的全称是”JavaScriptObjectNotation”,意思是JavaScript对象表示法,它是一种基于文本,独立于语言的轻量级数据交换格式。JSON有两种表示结构,对象和数组。14.数据库连接池的思想是什么?有哪些常用的数据库连接池?答题要点:数据库连接池(ConnectionPool)技术的核心思想是:连接复用,为数据库连接建立一个“缓冲池”,预先在池中放入一定数量的数据库连接管道。通过建立一个数据库连接池以及一套连接使用、分配、管理策略,使得该连接池中的连接可以得到高效、安全的复用,避免了数据库连接频繁建立、关闭的开销。15.什么是数据的可视化?数据可视化框架有哪些?答题要点:数据可视化是根据数据的特性,如时间信息和空间信息等,以合适的可视化方式,例如图表(Chart)、图(Diagram)和地图(Map)等,将数据直观地展现出来,以帮助人们理解数据。数据可视化是软件项目生命周期中的最后一步,也是最重要的一步。数据可视化的框架主要有D3、ECharts及其他小框架JFreeChart等。五、Java程序员面试题1.使用JDBC操作数据库时,如何提升读取数据的性能?如何提升更新数据的性能?答题要点:要提升读取数据的性能,可以指定通过结果集(ResultSet)对象的setFetchSize()方法指定每次抓取的记录数(典型的空间换时间策略);要提升更新数据的性能可以使用PreparedStatement语句构建批处理,将若干SQL语句置于一个批处理中执行。2.事务的ACID是指什么?答题要点:事务具有四个属性:原子性(Atomic)、一致性(Consistent)、隔离性(Isolated)、持久性(Durable),这四个属性通常被称为ACID特性。学习领域9Java设计模式课后习题一、填空题1.面向对象的六条基本原则包括:开闭原则,里式代换原则,合成聚合原则以及___依赖倒转_____、___迪米特法则________

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论