为您找到与java面试大全及答案相关的共200个结果:
保育员,是指幼儿园或托儿所里负责照管儿童生活的人员,是在小学、托幼园所、社会福利机构及其他保育机构中,辅助教师负责婴幼儿保健、养育和协助教师对婴幼儿进行教育的人员。下面读文网小编整理的保育员面试问题及参考答案,供你参考。
31、“六龄齿”是 ( B )
A、乳牙 B、恒牙
32、要将牙齿里里外外都刷干净,至少需要刷多少时间?(C)
A、半分钟 B、一分钟 C、三到五分钟
33、在下面两种刷牙方法中应选用那种?( B )
A、横刷法 B、竖刷法
34、幼儿思维的主要特点是( A )
A具体形象性 B直觉行动性 C抽象逻辑性 D 创造性
35、相比之下,以下几种方法中,能使年龄大一些的幼儿经常保持快乐的最好方法是( C )
A、满足生理需要 B、给他们讲笑话 C、帮助他们获得成功感 D、给他们发奖品
36、患儿全身不适,咽痛明显。咽及扁桃体显著充血,亦可见脓性分泌物。舌质红,乳头红肿如草莓,称杨梅舌。颈部及颌下淋巴结肿大,有触痛。这是(c)的症状。
A、水痘 B、风疹 C、猩红热 D、麻疹
37、龋齿是怎样发生的?( C )
A、虫子蛀的 B、糖腐蚀的 C、是细菌作用在食物残渣上产生酸,酸腐蚀牙面形成的。
38、( A )是儿童生长发育最迅速的时期,也是心理发展最迅速的时期。
A、婴儿期 B、先学前期 C、学前期 D、少年期
39、( A )的早期,以烦躁夜啼、多汗、摇头和秃枕等表现为主。
A、佝偻病 B、肥胖症 C、缺铁性贫血 D、乙脑
40、(大)班幼儿应该学会使用筷子。
A、小班 B、中班 C、大班 D、学前班
41、热情、直率、精力旺盛、勇敢积极,但情绪容易激动,脾气暴躁,具有很高的兴奋性和较弱的抑制力是( B )气质类型的特点。
A、粘液质 B、胆汁质 C、多血质 D、抑郁质
43、0-3岁幼儿编班:2-3岁的班型以( B )个幼儿为宜。
A、3-4 B、10-15
浏览量:2
下载量:0
时间:
国家职业资格对网管员的定义是从事计算机网络运行、维护的人员。今天小编给大家带来的是网络管理员面试题,欢迎大家参考。
求职者在面试过程中,如何把握细节、巧妙地与HR过招,以获得工作机会?面试技巧是关键。职场专家根据多年HR实战工作经验,总结以下几点,以给求职者面试提供参考。
首先,求职者一定要准时到达面试地点,并且要身着正装,体现出求职者对于本次面试的重视,求职者第一印象在面试过程中非常重要。
在自我介绍环节,要把握好时间,最好在3-5分钟之间,明确介绍的内容,组织好语言,主要是向HR传达你的职业技能和应聘此岗位的优势,在工作经验方面不需要特别详细介绍,如果你的技能符合HR的需要,他们会对你的社会实践进行追加提问,此时需要多介绍一些你的工作业绩来加深招聘单位对你的好感,增加复试机会。
在面试时还需要注意的就是不要有小动作,若参加面试主考官不止一人,则应将主要目光停留于发问者,但过程中也应与其他主考官有适时的目光接触,以示尊重。
面试是一个双向选择的过程,求职者也可以向对方提问,但是不要问具体的岗位职责和工作内容,因为招聘信息里已经详细介绍了工作内容,不要让企业HR感受到你没有做好“家庭作业”就来考试,从而降低对你的满意度。
猜你感兴趣:
1.
2.
3.
4.
5.
浏览量:2
下载量:0
时间:
1、你认为财务工作对财务工作者而言最首要的要求是什么?为什么?
2、你认为财务管理在现代企业管理中应当处于何种位置?发挥何种作用?
3、你将参与不断前进的中国某某网的战争步伐,作为财务工作者,工作伊始你对你的工作有什么计划? 为什么?
4、中国某某网的会计报表,你建议,由哪些报表组成?中国某某网需要更高速地发展,需要什么样的财务工作?
5、案例:请提出中国某某网会员服务的成本分析方案,请提出中国某某网网络广告服务的成本分析方案
6、案例:请对中国某某网模拟一份成本控制方案,请参考网站产品,发挥你的想象
7、案例:本公司现与某世界五百强企业谈合作项目,作为财务人员,你应该给出什么数据,从财务角度加强双方合作的最大可能性呢?
8、案例:对于员工薪酬比例的设定,你有什么建议?
9、假如你是一位网络媒体的CFO,应该具备的是什么能力和素养?
10、你的未来五年规划是什么?
备注:5-8题属于发散性思维试题,请充分发挥你的想象。
利润提高的秘诀在于成本控制,从网会员服务、网络广告服务、网刊 这一系列的过程都做了严格控制,在保证优质服务的同时,把成本降下来,从而在激烈竞争的市场中保持了良好的利润。
一、成本控制在于把钱花得恰到好处
成本控制是一门花钱的艺术,而不是节约的艺术。如何将每一分钱花得恰到好处,将企业的每一种资源用到最需要它的地方。
二、成本控制需要建立科学机制
第一步:战略目标指导成本控制目标
方向正确等于成功了一半,成本控制也一样。成本控制的目的是为了不断的降低成本,获取更大的利润。所以,制定目标成本时首先要考虑企业的赢利目标,同时又要考虑有竞争力的其他网络公司的价格。在我们公司成本主要来源于费用,而费用发生在每一个环节、每一件事情、每一项活动上,因此,要把目标成本层层分解到各个部门甚至个人。
1.企业项目分析
各个部门以营销目标导向,进行年度工作的项目立项,列出为实现目标所需要做的各类项目,同时对项目进行任务分解,再对时间、成本、性能每个环节进行分析,对比成本与收益。比如市场部明年为了达到既定的目标,需要完成多少市场宣传及推广的项目,项目逐一分解成任务后,对每个任务所需要的费用进行合理预算,同时对产生的收益进行估算。
2.进行行业价值链分析
行业价值链:是企业存在于某一行业价值链的某个点,包括与上、下游与渠道企业的连接点,如会员服务做精做大,形成无形广告,改善价值的纵向联系也可以使企业与其上、下游和渠道企业共同降低成本,提高整体竞争优势。
3.竞争对手的价值链分析
竞争对手的价值链和本企业价值链在行业价值链中处于平行位置,通过对竞争对手价值链的分析,可以测算出竞争对手的成本。然后,自己企业与之相比较,就找出了与竞争对手在任务活动上的差异,扬长避短,争取成本优势。
第二步:成本控制四步执行法
1.减少目标不明确的项目和任务
在企业目标清晰的情况下,每个项目及任务都是为实现目标所服务的。项目立项分析后,可以把目标不明确的项目与任务削减掉。
2.明确各部门的成本任务
实行“全员成本管理”的方法。具体做法是先测算出各项费用的最高限额。然后横向分解落实到各部门,纵向分解落实到小组与个人,并与奖惩挂钩,使责、权、利统一,最终在整个企业内形成纵横交错的目标成本管理体系。
3.成本核算,精细化管理
没有数字进行标准量化,就无从谈及节俭和控制。伴随着成本控制计划出台的是一份数字清单,包括可控费用(人事、水电、包装、耗材等)和不可控费用(固定资产折旧、原料采购、利息、销售费用等)。每月、每季度都由财务汇总后发到管理者的手中,超支和异常的数据就用红色特别标识。在月底的总结会议中,相关部门需要对超支的部分做出解释。为了让员工养成成本意识,最好建立《流程与成本控制SOP手册》。手册从原材料、电、水、印刷用品、劳保用品、电话、办公用品、设备和其他易耗品方面,提出控制成本的方法。当然,有效的激励也是成本控制的好办法,所以,成本控制奖励也成为员工工资的一部分。
4.成本管理的“提前”和“延伸”
“提前”就是加大技术投资,控制机会成本;“延伸”就是将上下游整合起来。当今的市场竞争,是实力的竞争,人才的竞争,服务质量的竞争,也是成本的竞争。
5、重视信息管理,建立信息沟通体系
信息是知识经济时代的主要产品,信息技术是知识经济的主要支柱。进行预测需要搜集有关工作所需要的信息;与其他部门沟通和协调需要传递信息;领导做出决策、计划下达执行的过程也是信息流动的过程。同样,控制活动也离不开信息,要想及时发现偏差,采取适当的修正行动,首先必须有信息反馈,掌握有关环境变化的信息、计划执行结果的信息。目前,信息技术正日益渗透到社会生活的各个方面,对人类社会的进步和发展产生了深远影响,使得信息的扩散与应用大大加快,决策、交易可在瞬间完成。在日益激烈的市场竞争中,最早获得准确详实的信息,及时作出准确预测、正确决策,就能拥有主动权,在市场竞争中占据主导地位;同时,还可以最大限度地规避市场竞争风险,防范由于信息原因造成的预测不准而导致的决策失误,使公司经营活动得以顺利进行。
6、利用共享资源,降低产品成本
分享共享资源的越多,分摊到公司中的成本就越低,如:企业固定资产、产品的研究开发费用、资源的采购费用、信息使用费用、市场开发费用等等,都是共享资源。增加使用这些共享资源的规模和频率,就可以降低的成本。
#p#副标题#e#
浏览量:2
下载量:0
时间:
Java是一种可以撰写跨平台应用程序的面向对象的程序设计语言。今天小编给大家整理的是JAVA工作者的面试题,欢迎大家前来参考试做。
1、面向对象的特征有哪些方面
1.抽象:
抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。抽象包括两个方面,一是过程抽象,二是数据抽象。
2.继承:
继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法。对象的一个新类可以从现有的类中派生,这个过程称为类继承。新类继承了原始类的特性,新类称为原始类的派生类(子类),而原始类称为新类的基类(父类)。派生类可以从它的基类那里继承方法和实例变量,并且类可以修改或增加新的方法使之更适合特殊的需要。
3.封装:
封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面。面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护的接口访问其他对象。
4. 多态性:
多态性是指允许不同类的对象对同一消息作出响应。多态性包括参数化多态性和包含多态性。多态性语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名问题。
2、String是最基本的数据类型吗?
基本数据类型包括byte、int、char、long、float、double、boolean和short。
java.lang.String类是final类型的,因此不可以继承这个类、不能修改这个类。为了提高效率节省空间,我们应该用StringBuffer类
3、int 和 Integer 有什么区别
Java 提供两种不同的类型:引用类型和原始类型(或内置类型)。Int是java的原始数据类型,Integer是java为int提供的封装类。Java为每个原始类型提供了封装类。
原始类型封装类
booleanBoolean
charCharacter
byteByte
shortShort
intInteger
longLong
floatFloat
doubleDouble
引用类型和原始类型的行为完全不同,并且它们具有不同的语义。引用类型和原始类型具有不同的特征和用法,它们包括:大小和速度问题,这种类型以哪种类型的数据结构存储,当引用类型和原始类型用作某个类的实例数据时所指定的缺省值。对象引用实例变量的缺省值为 null,而原始类型实例变量的缺省值与它们的类型有关。
4、String 和StringBuffer的区别
JAVA平台提供了两个类:String和StringBuffer,它们可以储存和操作字符串,即包含多个字符的字符数据。这个String类提供了数值不可改变的字符串。而这个StringBuffer类提供的字符串进行修改。当你知道字符数据要改变的时候你就可以使用StringBuffer。典型地,你可以使用StringBuffers来动态构造字符数据。
5、运行时异常与一般异常有何异同?
异常表示程序运行过程中可能出现的非正常状态,运行时异常表示虚拟机的通常操作中可能遇到的异常,是一种常见运行错误。java编译器要求方法必须声明抛出可能发生的非运行时异常,但是并不要求必须声明抛出未被捕获的运行时异常。
6、说出Servlet的生命周期,并说出Servlet和CGI的区别。
Servlet被服务器实例化后,容器运行其init方法,请求到达时运行其service方法,service方法自动派遣运行与请求对应的doXXX方法(doGet,doPost)等,当服务器决定将实例销毁的时候调用其destroy方法。
与cgi的区别在于servlet处于服务器进程中,它通过多线程方式运行其service方法,一个实例可以服务于多个请求,并且其实例一般不会销毁,而CGI对每个请求都产生新的进程,服务完成后就销毁,所以效率上低于servlet。
7、说出ArrayList,Vector, LinkedList的存储性能和特性
ArrayList和Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢,Vector由于使用了synchronized方法(线程安全),通常性能上较ArrayList差,而LinkedList使用双向链表实现存储,按序号索引数据需要进行前向或后向遍历,但是插入数据时只需要记录本项的前后项即可,所以插入速度较快。
8、EJB是基于哪些技术实现的?并说出SessionBean和EntityBean的区别,StatefulBean和StatelessBean的区别。
EJB包括Session Bean、Entity Bean、Message Driven Bean,基于JNDI、RMI、JAT等技术实现。
SessionBean在J2EE应用程序中被用来完成一些服务器端的业务操作,例如访问数据库、调用其他EJB组件。EntityBean被用来代表应用系统中用到的数据。
对于客户机,SessionBean是一种非持久性对象,它实现某些在服务器上运行的业务逻辑。
对于客户机,EntityBean是一种持久性对象,它代表一个存储在持久性存储器中的实体的对象视图,或是一个由现有企业应用程序实现的实体。
Session Bean 还可以再细分为 Stateful Session Bean 与 Stateless Session Bean ,这两种的 Session Bean都可以将系统逻辑放在 method之中执行,不同的是 Stateful Session Bean 可以记录呼叫者的状态,因此通常来说,一个使用者会有一个相对应的 Stateful Session Bean 的实体。Stateless Session Bean 虽然也是逻辑组件,但是他却不负责记录使用者状态,也就是说当使用者呼叫 Stateless Session Bean 的时候,EJB Container 并不会找寻特定的 Stateless Session Bean 的实体来执行这个 method。换言之,很可能数个使用者在执行某个 Stateless Session Bean 的 methods 时,会是同一个 Bean 的 Instance 在执行。从内存方面来看, Stateful Session Bean 与 Stateless Session Bean 比较, Stateful Session Bean 会消耗 J2EE Server 较多的内存,然而 Stateful Session Bean 的优势却在于他可以维持使用者的状态。
9、Collection 和 Collections的区别。
Collection是集合类的上级接口,继承与他的接口主要有Set 和List.
Collections是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作。
10、&和&&的区别。
&是位运算符,表示按位与运算,&&是逻辑运算符,表示逻辑与(and)。
11、HashMap和Hashtable的区别。
HashMap是Hashtable的轻量级实现(非线程安全的实现),他们都完成了Map接口,主要区别在于HashMap允许空(null)键值(key),由于非线程安全,效率上可能高于Hashtable。
HashMap允许将null作为一个entry的key或者value,而Hashtable不允许。
HashMap把Hashtable的contains方法去掉了,改成containsvalue和containsKey。因为contains方法容易让人引起误解。
Hashtable继承自Dictionary类,而HashMap是Java1.2引进的Map interface的一个实现。
最大的不同是,Hashtable的方法是Synchronize的,而HashMap不是,在多个线程访问Hashtable时,不需要自己为它的方法实现同步,而HashMap 就必须为之提供外同步。
Hashtable和HashMap采用的hash/rehash算法都大概一样,所以性能不会有很大的差异。
12、final, finally, finalize的区别。
final 用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。
finally是异常处理语句结构的一部分,表示总是执行。
finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,可以覆盖此方法提供垃圾收集时的其他资源回收,例如关闭文件等。
13、sleep() 和 wait() 有什么区别?
sleep是线程类(Thread)的方法,导致此线程暂停执行指定时间,给执行机会给其他线程,但是监控状态依然保持,到时后会自动恢复。调用sleep不会释放对象锁。
wait是Object类的方法,对此对象调用wait方法导致本线程放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象发出notify方法(或notifyAll)后本线程才进入对象锁定池准备获得对象锁进入运行状态。
14、Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型?
方法的重写Overriding和重载Overloading是Java多态性的不同表现。重写Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding)。子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被"屏蔽"了。如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading)。Overloaded的方法是可以改变返回值的类型。
15、error和exception有什么区别?
error 表示恢复不是不可能但很困难的情况下的一种严重问题。比如说内存溢出。不可能指望程序能处理这样的情况。
exception 表示一种设计或实现问题。也就是说,它表示如果程序运行正常,从不会发生的情况。
16、同步和异步有何异同,在什么情况下分别使用他们?举例说明。
如果数据将在线程间共享。例如正在写的数据以后可能被另一个线程读到,或者正在读的数据可能已经被另一个线程写过了,那么这些数据就是共享数据,必须进行同步存取。
当应用程序在对象上调用了一个需要花费很长时间来执行的方法,并且不希望让程序等待方法的返回时,就应该使用异步编程,在很多情况下采用异步途径往往更有效率。
17、abstract class和interface有什么区别?
声明方法的存在而不去实现它的类被叫做抽象类(abstract class),它用于要创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的情况。不能创建abstract 类的实例。然而可以创建一个变量,其类型是一个抽象类,并让它指向具体子类的一个实例。不能有抽象构造函数或抽象静态方法。Abstract 类的子类为它们父类中的所有抽象方法提供实现,否则它们也是抽象类为。取而代之,在子类中实现该方法。知道其行为的其它类可以在类中实现这些方法。
接口(interface)是抽象类的变体。在接口中,所有方法都是抽象的。多继承性可通过实现这样的接口而获得。接口中的所有方法都是抽象的,没有一个有程序体。接口只可以定义static final成员变量。接口的实现与子类相似,除了该实现类不能从接口定义中继承行为。当类实现特殊接口时,它定义(即将程序体给予)所有这种接口的方法。然后,它可以在实现了该接口的类的任何对象上调用接口的方法。由于有抽象类,它允许使用接口名作为引用变量的类型。通常的动态联编将生效。引用可以转换到接口类型或从接口类型转换,instanceof 运算符可以用来决定某对象的类是否实现了接口。
浏览量:2
下载量:0
时间:
短暂的第一印象已更多地成为了自我实现的预言:面试官只能听到所希望听到的内容,并且一厢情愿地将一时的表现视同一贯的行为。下面是读文网小编为你整理的关于经典JAVA面试题大全,希望你喜欢。
面向对象编程(OOP)
Java是一个支持并发、基于类和面向对象的计算机编程语言。下面列出了面向对象软件开发的优点:
代码开发模块化,更易维护和修改。
代码复用。
增强代码的可靠性和灵活性。
增加代码的可理解性。
面向对象编程有很多重要的特性,比如:封装,继承,多态和抽象。下面的章节我们会逐个分析这些特性。
封装
封装给对象提供了隐藏内部特性和行为的能力。对象提供一些能被其他对象访问的方法来改变它内部的数据。在Java当中,有3种修饰符:public,private和protected。每一种修饰符给其他的位于同一个包或者不同包下面对象赋予了不同的访问权限。
下面列出了使用封装的一些好处:
通过隐藏对象的属性来保护对象内部的状态。
提高了代码的可用性和可维护性,因为对象的行为可以被单独的改变或者是扩展。
禁止对象之间的不良交互提高模块化。
参考这个文档获取更多关于封装的细节和示例。
多态
多态是编程语言给不同的底层数据类型做相同的接口展示的一种能力。一个多态类型上的操作可以应用到其他类型的值上面。
继承
继承给对象提供了从基类获取字段和方法的能力。继承提供了代码的重用行,也可以在不修改类的情况下给现存的类添加新特性。
抽象
抽象是把想法从具体的实例中分离出来的步骤,因此,要根据他们的功能而不是实现细节来创建类。Java支持创建只暴漏接口而不包含方法实现的抽象的类。这种抽象技术的主要目的是把类的行为和实现细节分离开。
抽象和封装的不同点
抽象和封装是互补的概念。一方面,抽象关注对象的行为。另一方面,封装关注对象行为的细节。一般是通过隐藏对象内部状态信息做到封装,因此,封装可以看成是用来提供抽象的一种策略。
常见的Java问题
1.什么是Java虚拟机?为什么Java被称作是“平台无关的编程语言”?
Java虚拟机是一个可以执行Java字节码的虚拟机进程。Java源文件被编译成能被Java虚拟机执行的字节码文件。
Java被设计成允许应用程序可以运行在任意的平台,而不需要程序员为每一个平台单独重写或者是重新编译。Java虚拟机让这个变为可能,因为它知道底层硬件平台的指令长度和其他特性。
2.JDK和JRE的区别是什么?
Java运行时环境(JRE)是将要执行Java程序的Java虚拟机。它同时也包含了执行applet需要的浏览器插件。Java开发工具包 (JDK)是完整的Java软件开发包,包含了JRE,编译器和其他的工具(比如:JavaDoc,Java调试器),可以让开发者开发、编译、执行 Java应用程序。
3.”static”关键字是什么意思?Java中是否可以覆盖(override)一个private或者是static的方法?
“static”关键字表明一个成员变量或者是成员方法可以在没有所属的类的实例变量的情况下被访问。
Java中static方法不能被覆盖,因为方法覆盖是基于运行时动态绑定的,而static方法是编译时静态绑定的。static方法跟类的任何实例都不相关,所以概念上不适用。
4.是否可以在static环境中访问非static变量?
static变量在Java中是属于类的,它在所有的实例中的值是一样的。当类被Java虚拟机载入的时候,会对static变量进行初始化。如果你的代码尝试不用实例来访问非static的变量,编译器会报错,因为这些变量还没有被创建出来,还没有跟任何实例关联上。
5.Java支持的数据类型有哪些?什么是自动拆装箱?
Java语言支持的8中基本数据类型是:
byte
short
int
long
float
double
boolean
char
自动装箱是Java编译器在基本数据类型和对应的对象包装类型之间做的一个转化。比如:把int转化成Integer,double转化成double,等等。反之就是自动拆箱。
6.Java中的方法覆盖(Overriding)和方法重载(Overloading)是什么意思?
Java中的方法重载发生在同一个类里面两个或者是多个方法的方法名相同但是参数不同的情况。与此相对,方法覆盖是说子类重新定义了父类的方法。方法覆盖必须有相同的方法名,参数列表和返回类型。覆盖者可能不会限制它所覆盖的方法的访问。
7.Java中,什么是构造函数?什么是构造函数重载?什么是复制构造函数?
当新对象被创建的时候,构造函数会被调用。每一个类都有构造函数。在程序员没有给类提供构造函数的情况下,Java编译器会为这个类创建一个默认的构造函数。
Java中构造函数重载和方法重载很相似。可以为一个类创建多个构造函数。每一个构造函数必须有它自己唯一的参数列表。
Java不支持像C++中那样的复制构造函数,这个不同点是因为如果你不自己写构造函数的情况下,Java不会创建默认的复制构造函数。
8.Java支持多继承么?
不支持,Java不支持多继承。每个类都只能继承一个类,但是可以实现多个接口。
9.接口和抽象类的区别是什么?
Java提供和支持创建抽象类和接口。它们的实现有共同点,不同点在于:
接口中所有的方法隐含的都是抽象的。而抽象类则可以同时包含抽象和非抽象的方法。
类可以实现很多个接口,但是只能继承一个抽象类
类如果要实现一个接口,它必须要实现接口声明的所有方法。但是,类可以不实现抽象类声明的所有方法,当然,在这种情况下,类也必须得声明成是抽象的。#p#副标题#e#
抽象类可以在不提供接口方法实现的情况下实现接口。
Java接口中声明的变量默认都是final的。抽象类可以包含非final的变量。
Java接口中的成员函数默认是public的。抽象类的成员函数可以是private,protected或者是public。
接口是绝对抽象的,不可以被实例化。抽象类也不可以被实例化,但是,如果它包含main方法的话是可以被调用的。
也可以参考JDK8中抽象类和接口的区别
10.什么是值传递和引用传递?
对象被值传递,意味着传递了对象的一个副本。因此,就算是改变了对象副本,也不会影响源对象的值。
对象被引用传递,意味着传递的并不是实际的对象,而是对象的引用。因此,外部对引用对象所做的改变会反映到所有的对象上。
Java线程
11.进程和线程的区别是什么?
进程是执行着的应用程序,而线程是进程内部的一个执行序列。一个进程可以有多个线程。线程又叫做轻量级进程。
12.创建线程有几种不同的方式?你喜欢哪一种?为什么?
有三种方式可以用来创建线程:
继承Thread类
实现Runnable接口
应用程序可以使用Executor框架来创建线程池
实现Runnable接口这种方式更受欢迎,因为这不需要继承Thread类。在应用设计中已经继承了别的对象的情况下,这需要多继承(而Java不支持多继承),只能实现接口。同时,线程池也是非常高效的,很容易实现和使用。
13.概括的解释下线程的几种可用状态。
线程在执行过程中,可以处于下面几种状态:
就绪(Runnable):线程准备运行,不一定立马就能开始执行。
运行中(Running):进程正在执行线程的代码。
等待中(Waiting):线程处于阻塞的状态,等待外部的处理结束。
睡眠中(Sleeping):线程被强制睡眠。
I/O阻塞(Blocked on I/O):等待I/O操作完成。
同步阻塞(Blocked on Synchronization):等待获取锁。
死亡(Dead):线程完成了执行。
14.同步方法和同步代码块的区别是什么?
在Java语言中,每一个对象有一把锁。线程可以使用synchronized关键字来获取对象上的锁。synchronized关键字可应用在方法级别(粗粒度锁)或者是代码块级别(细粒度锁)。
15.在监视器(Monitor)内部,是如何做线程同步的?程序应该做哪种级别的同步?
监视器和锁在Java虚拟机中是一块使用的。监视器监视一块同步代码块,确保一次只有一个线程执行同步代码块。每一个监视器都和一个对象引用相关联。线程在获取锁之前不允许执行同步代码。
16.什么是死锁(deadlock)?
两个进程都在等待对方执行完毕才能继续往下执行的时候就发生了死锁。结果就是两个进程都陷入了无限的等待中。
17.如何确保N个线程可以访问N个资源同时又不导致死锁?
使用多线程的时候,一种非常简单的避免死锁的方式就是:指定获取锁的顺序,并强制线程按照指定的顺序获取锁。因此,如果所有的线程都是以同样的顺序加锁和释放锁,就不会出现死锁了。
Java集合类
18.Java集合类框架的基本接口有哪些?
Java集合类提供了一套设计良好的支持对一组对象进行操作的接口和类。Java集合类里面最基本的接口有:
Collection:代表一组对象,每一个对象都是它的子元素。
Set:不包含重复元素的Collection。
List:有顺序的collection,并且可以包含重复元素。
Map:可以把键(key)映射到值(value)的对象,键不能重复。
19.为什么集合类没有实现Cloneable和Serializable接口?
集合类接口指定了一组叫做元素的对象。集合类接口的每一种具体的实现类都可以选择以它自己的方式对元素进行保存和排序。有的集合类允许重复的键,有些不允许。
20.什么是迭代器(Iterator)?
Iterator接口提供了很多对集合元素进行迭代的方法。每一个集合类都包含了可以返回迭代器实例的
迭代方法。迭代器可以在迭代的过程中删除底层集合的元素。
看过“关于经典JAVA面试题大全”
浏览量:2
下载量:0
时间:
做笔试面试题几乎是每个公司选拔java个人求职者的必要程序,对java个人求职者是一种考核形式。下面是读文网小编为大家带来的2017 java笔试面试题,相信对你会有帮助的。
1答案:ABD
2答案: D
3答案:BC
4答案:AB
5答案AC
6答案:A,G
7答案:A
8A B C D E
9A B C D E
10A B D
11A B C
12B D
13A C
14A B C
15A B C
16答案:C
二 填空
3 123.7 & 2800 2
三判断
× ×√√√√×√×√
四写出相应的SQL语句
1Select job,count(*) from emp group by job;
2Select ename,sal,deptno from emp where deptno=(select deptno from emp where ename=’SMITH’);
3Select ename,sal,grade from emp,salgrade where sal between losal and hisal;
4Select * from (select * from emp order by sal desc) where rownum<=3;
5Select e1.ename empname,e2.ename mgrname from emp e1,emp e2 where e1.mgr=e2.empno;
五简答
可以通过声明和发布来截获自定义异常。
一、在声明部分为声明自定义异常名。
二、在执行部分使用 RAISE 语句显式地发布异常。
三、在相应的异常处理例程中引用已声明的异常。
2(1).抽象:
抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。抽象包括两个方面,一是过程抽象,二是数据抽象。
(2).继承:
继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法。对象的一个新类可以从现有的类中派生,这个过程称为类继承。新类继承了原始类的特性, 新类称为原始类的派生类(子类),而原始类称为新类的基类(父类)。派生类可以从它的基类那里继承方法和实例变量,并且类可以修改或增加新的方法使之更适合特殊的需要。
(3).封装:
封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面。面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护的接口访问其他对象。
(4). 多态性:
多态性是指允许不同类的对象对同一消息作出响应。多态性包括参数化多态性和包含多态性。多态性语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名问题。
List 以特定次序来持有元素,可有重复元素。Set 无法拥有重复元素,内部排序。Map 保存key-value值,value可多值。
3List 以特定次序来持有元素,可有重复元素。Set 无法拥有重复元素,内部排序。Map 保存key-value值,value可多值
4a、Action类:
struts1.2要求Action类继承一个基类。struts2.0 Action要求继承ActionSupport基类 b、线程模式
struts1.2 Action是单例模式的并且必须是线程安全的,因为仅有一个Action的实例来处理所有的请求。
单例策略限制了Struts1.2 Action能做的事情,并且开发时特别小心。Action资源必须是线程安全的或同步的。
struts2.0 Action为每一个请求产生一个实例,因此没有线程安全问题。
c、Servlet依赖
struts1.2 Action依赖于Servlet API,因为当一个Action被调用时HttpServletRequest和HttpServletResponse被传递给execut方法。
struts2.0 Action不依赖于容器,允许Action脱离容器单独测试。如果需要,Struts2 Action仍
然可以访问初始的Request和Response。
但是,其他的元素减少或者消除了直接访问HttpServletRequest和HttpServletResponse的必要性。
d、可测性
测试struts1.2 Action的一个主要问题是execute方法暴露了Servlet API(这使得测试要依赖于容器)。一个第三方扩展:struts TestCase
提供了一套struts1.2的模拟对象来进行测试。
Struts2.0 Action可以通过初始化、设置属性、调用方法来测试,“依赖注入”也使得测试更容易。
点击下页还有更多>>>2017java笔试面试题参考答案
#p#副标题#e#
1. 在工程中加入Struts支持
2. 编辑ApplicationResource.properties文件,在其中加入要使用国际化的信息, 例如: lable.welcome.china=Welcome!!!
3. 创建英文资源文件ApplicationResource_en.properites
4. 创建临时中文资源文件ApplicationResource_temp.properites 例如:
lable.welcom.china=中国欢迎您!
5. 对临时中文资源文件进行编码转换。可以使用myeclipse的插件,也可以在dos下执行: native2ascii -encoding gb2312 ApplicationResource_temp.properties
ApplicationResource_zh_CN.properties
6. 在jsp中加入struts的bean标记库
显示信息:
可以在struts-config.xml文件中定义多个资源包,而每个资源包可使用key属性指定包的名称
6.6form-bean配置:(在配置文件struts-config.xml中):
name: 指定form的名字; type指定form的类型:包名+类名;
action配置:(在配置文件struts-config.xml中)
path=”?”
attribute="?"
input="?"
name="?"
parameter="?"
scope="?"
type="?"
71、hibernate自带的分页机制:获得Session对象后,从Session中获得Query对象。用Query.setFirstResult():设置要显示的第一行数据,
Query.setMaxResults():设置要显示的最后一行数据。
2、不使用hibernate自带的分页,可采用sql语句分页,
如:5:为每页显示的记录,2为当前页: select * top 5 from table where tabId not in (select tabId top (2-1)*5 from table);
8hibernate中一对多配置文件会相应的映射为两张表,并且它们之间的关系是一对多的。
例如:一个student和classes表的关系 。一个学生只能是一个班的,一个班可以有多个学生。
9 1 很少被修改的数据 2 不是很重要的数据,允许出现偶尔并发的数据 3 不会被并发访问
10控制反转IOC AOP
11面向切面编程:主要是横切一个关注点,将一个关注点模块化成一个切面。在切面上声明一个通知(Advice)和切入点(Pointcut); 通知: 是指在切面的某个特定的连接点(代表一个方法的执行。通过声明一个org.aspectj.lang.JoinPoint类型的参数可以使通知(Advice)的主体部分获得连接点信息。)上执行的动作。通知中定义了要插入的方法。切入点:切入点的内容是一个表达式,以描述需要在哪些对象的哪些方法上插入通知中定义的方法。 项目中用到的Spring中的切面编程最多的地方:声明式事务管理。
a、定义一个事务管理器
b、配置事务特性(相当于声明通知。一般在业务层的类的一些方法上定义事务)
c、配置哪些类的哪些方法需要配置事务(相当于切入点。一般是业务类的方法上)
12Insert 条件谓词 inserting;
Update条件谓词 updating;
Delete 条件谓词 deleting。
13视图是一种Oracle对象,是来自一张或多张表或视图中数据的子集的逻辑表示。
特点:限制对数据库的访问;容易实现数据的复杂的查询;维护数据的独立性;对于相同的数据可以产生不同的视图。
14Primary key 确保非空且唯一;
Foreign key 确保引用完整性;
Unique 确保列或者列的组合中的每个值都是唯一的;
Check 限制每条记录都要满足的条件;
Not null 确保该列不能保存空值。
15两者都带有0个或多个参数,参数可以具有模式。
两者都是PL/SQL语句块的不同形式,都有声明段、可执行段以及异常段。
两者都可以存储在数据库中或在语句块中声明
两者不同的是,过程调用本身是一个PL/SQL语句,而函数总是向调用块返回一个值。
16 使用%rowtype属性声明记录变量的优点是什么?
可以不必知道数据库中列的数量和类型。
在运行期间,数据库中列的数量和类型可能发生变化。
在SELECT语句中使用该属性可以有效地检索表中的行。
六编程
1SET serveroutput ON;
Declare
v_empno emp.empno%type:=’&员工编号’;
v_ename emp.ename%type;
v_deptno emp.deptno%type;
v_mgr emp.mgr%type;
Begin
SELECT ename,deptno,mgr INTO v_ename,v_deptno,v_mgr from emp WHERE empno=v_empno;
DBMS_OUTPUT.PUT_LINE(‘员工’||v_ename||’在部门’||’v_deptno’||’主管’||v_mgr);
EXCEPTION
WHEN NO_DATA_FOUND THEN
DBMS_OUTPUT.PUT_LINE(‘没有此员工’);
END;
2Declare
Cursor emp_cur(v_job emp.job%TYPE) is
Select empno,ename,hiredate from emp where job=v_job;
v_empno emp.empno%TYPE;
v_ename emp.ename%TYPE;
v_hiredate emp.hiredate%TYPE;
BEGIN
OPEN emp_cur(upper(‘&job’));
LOOP
Fetch emp_cur INTO v_empno,v_ename,v_hiredate;
Exit when emp_cur%NOTFOUND;
DBMS_OUTPUT.PUT_LINE(‘编号 姓名 工资’);
DBMS_OUTPUT.PUT_LINE(v_empno||v_ename||v_hiredate);
END LOOP;
CLOSE emp_cur;
END;
Declare
Cursor emp_cur(v_job emp.job%TYPE) is
Select empno,ename,hiredate from emp where job=v_job;
v_empno emp.empno%TYPE;
v_ename emp.ename%TYPE;
v_hiredate emp.hiredate%TYPE;
BEGIN
FOR i IN emp_cur(upper(‘&job’)) LOOP
v_empno:=i.empno;
v_ename:=i. ename;
v_hiredate:=i. hiredate;
DBMS_OUTPUT.PUT_LINE(‘编号 姓名 工资’);
DBMS_OUTPUT.PUT_LINE(v_empno||v_ename||v_hiredate);
END LOOP;
END;
3CREATE OR REPLACE FUNCTION f_emp(f_job emp.job%TYPE)
RETURN BOOLEAN
Is
v_job emp.job%TYPE;
BEGIN
SELECT DISTINCT job INTO v_job FROM emp WHERE job=f_job;
RETURN TRUE;
EXCEPTION
WHEN NO_DATA_FOUND THEN
RETURN FALSE;
END f_emp;
Begin
If f_emp(upper(‘&job’)) THEN
DBMS_OUTPUT.PUT_LINE(‘日’);
ELSE
DBMS_OUTPUT.PUT_LINE(‘插’);
END IF;
END;
4CREATE OR REPLACE TRIGGER t_emp_sal
BEFORE INSERT OR UPDATE ON emp
Begin
IF :new.sal>5000 THEN
RAISE_APPLICATIONG_ERROR(‘ERROR!!’);
ELSE
INSERT int up_emp VALUES(empno,sal,sysdate);
END IF;
END;
5很奇怪,结果是Test
这属于脑筋急转弯的题目,在一个qq群有个网友正好问过这个问题,我觉得挺有趣,就研究了一下,没想到今天还被你面到了,哈哈。
在test方法中,直接调用getClass().getName()方法,返回的是Test类名
由于getClass()在Object类中定义成了final,子类不能覆盖该方法,所以,在
test方法中调用getClass().getName()方法,其实就是在调用从父类继承的getClass()方法,等效于调用super.getClass().getName()方法,所以,super.getClass().getName()方法返回的也应该是Test。
如果想得到父类的名称,应该用如下代码:
getClass().getSuperClass().getName();
6返回的结果是2。
我可以通过下面一个例子程序来帮助我解释这个答案,从下面例子的运行结果中可以发现,try中的return语句调用的函数先于finally中调用的函数执行,也就是说return语句先执行,finally语句后执行,所以,返回的结果是2。Return并不是让函数马上返回,而是return语句执行后,将把返回结果放置进函数栈中,此时函数并不是马上返回,它要执行finally语句后才真正开始返回。
7最终的程序代码如下:
public class ThreadTest {} private class Business { boolean bShouldSub = true;https://这里相当于定义了控制该谁执行的一个信号灯 public synchronized void MainThread(int i) { if(bShouldSub) try { this.wait(); https:// TODO Auto-generated catch block } catch (InterruptedException e) { ).start(); for(int i=0;i<50;i++) { business.MainThread(i); } } public void run() { } for(int i=0;i<50;i++) { business.SubThread(i); } public void init() { final Business business = new Business(); new Thread( new Runnable() { } /** * @param args */ public static void main(String[] args) { https:// TODO Auto-generated method stub new ThreadTest().init();
} } } { } } for(int j=0;j<5;j++) System.out.println(Thread.currentThread().getName() + ":i=" + i +",j=" + j); bShouldSub = true; this.notify(); public synchronized void SubThread(int i) { } if(!bShouldSub) { } bShouldSub = false; this.notify(); System.out.println(Thread.currentThread().getName() + try { this.wait(); https:// TODO Auto-generated catch block e.printStackTrace(); } catch (InterruptedException e) { } for(int j=0;j<10;j++) ":i=" + i +",j=" + j);
8。
Vector newVector = new Vector();
For (int i=0;i
{
Object obj = vector.get(i);
if(!newVector.contains(obj);
newVector.add(obj);
}9
int engishCount;
int chineseCount;
int digitCount;
for(int i=0;i
{char ch = str.charAt(i);
if(ch>=’0’ && ch<=’9’)
{digitCount++}
else if((ch>=’a’ && ch<=’z’) || (ch>=’A’ && ch<=’Z’))
{engishCount++;}
else
{chineseCount++;}}
System.out.println(……………);
(1)select * from employees
where Year(hiredDate) = Year(date())
or (salary between 1000 and 200)
or left(last_name,3)='abc';
(2)mysql> select id,name,salary,deptid did from employee1 where (select avg(salary) from employee1 where deptid = did) > 1800;
(3)select employee1.*,(employee1.salary-t.avgSalary)*100/employee1.salary from employee1,
(select deptid,avg(salary) avgSalary from employee1 group by deptid) as t where employee1.deptid = t.deptid and employee1.salary>t.avgSalary;
看过“2017 java笔试面试题”
浏览量:2
下载量:0
时间:
javaweb个人求职者要去参加面试之前,得先了解一下javaweb面试中一些常见的面试题并学会怎么回答。下面是读文网小编为大家带来的javaweb常见面试题及参考答案,相信对你会有帮助的。
(1)下列各题ABCD四个选顼中,只有一个选项是正确的,请将正确选项填写在答题纸上
(1)下列关于栈的描述中错误的是( B)
A. 栈是先进后出的线性表
B 栈只能顺序存储
C 栈具有记忆作用
D 对栈的插入弓删除操作中,不需要改变栈底指针
正确答案: B
分析: 栈是链式存储的
(2)对于长度为n的线性表,在最坏情况下,下列各排序法所对应的比较次数中正确的是( )
A 冒泡排序为n/2
B 冒泡排序为n
C 快速排序为n
D 快速排序为n(n-l)/2
正确答案: D
分析:
想想快速排序,每次都会选取线性表的轴值,随后以此轴值划分为两个子线性表再分别进行快排,在最坏情况下,也就是说每次选出的线性表轴值完全不能将这个线性表划分为两个子线性表。那么此时快速排序退化为冒泡排序了。
那么第一趟排序时,轴值(线性表的中间位置)被选出,这个值绝对是这个线性表中最大的(不然也不能是最坏情况),其他值都比他小,那么线性表现在分为完全不对等的两段(一段是0,另一段是n - 1),一段是这个值,一段是其他值。同样第二趟排序在刚才剩下的值中选中间值(剩余值中最大的那个),又分为不对等两段,依次递推。也就是说每次都比较了N - 1个元素(轴值选出后都与它比较大小),那么肯定是比较了n - 1次(如第一次先挑了个轴值,然后剩下n - 1比较),n代表当前子线性表中元素个数 由此最白痴的数列问题出现了,如下
1 + 2 + 3 + .......... + n - 2 + n - 1 = n(n - 1) / 2
还有一种投机取巧的方法,在最垃圾情况下既然快排变为冒泡,那由时间复杂度知其必为o(n ^ 2)的复杂度,答案中ABC都是线性时间复杂,显然错误
(3)下列对于线性链表的描述中正确的是( )
A 存储空间间不一定是连续,且各元素的存储顺序是任意的
B 存储空间不一定是连续,且前件元素一定存储在后件元素的前面
C 存储定间必须连续,且前件元素一定存储在后件元素的前面
D 存储空间必须连续,且各元素的存储顺序是任意的
答案是A, 分析 链接存储并不要求存储空间连续,存储位置也不用有序
(4)为了使模块爆可能独立,要求( )
A 模块的内聚程度要尽量高,且各模块间的耦合程度要尽量强
B 模块的内聚程度要尽量高,且各模块间的耦合程度要尽量弱
C 模块的内聚程度要尽量低,且各模块间的耦合程度要尽量弱
D 模块的内聚程度要尽量低,且各模块间的耦合程度要尽量强
答案:B
分析:高内聚,低耦合。
5)下列叙述中,正确的是( )
A Java语言的标识符是区分大小写的
B 源文件名与public类名可以不相同
C 源文件扩展名为.jar
D 源文件中public类的数目不限
答案:A
6)下列属于合法的Java标识符是( )
A _cat
B 5books
C +static
D -3.14159
答案:A
7) 在Java中,表示换行符的转义字符是( )
A
B f
C ‘n’
D dd
答案:A
( 8)扯Java中,所有类的根类是( )
A. java.lang.Object
B.java.lang.Class
C.java.applet.Applet
D.java.awt.Frame
答案:A
(9).在Java+中,用Package语句说明一个包时,该包的层次结构必须是(
A 与文件的结构相同
B 与文件目录的层次相同 )
C 与文件类型相同
D 与文件大小相同
答案:A
(10)在读字符文件Employee.dat时,使用该文件作为参数的类是( )。
A BufferReader
B DatalnputStream
C DataOutoutStream
D FileInputStream
答案:D
(11)在Java中,能实现多重继承效果的方式是( )。
A 内部类
B 适配器
C 接口
D 同步
答案:C
(12) char类型的取值范围是( )。
A 2-7~27-1
B 0~216-1
C -215~215—1
D 0~28-1
答案:A
(13)下列方法中可以用来创建一个新线程的是( )。
A 实现java.lang.Runnable接口并重写start0方法
B 实现java.iang.Runnable接口并重写run0方法
C 继承java.lang.Thread类并重写run0方法
D 继承java.lang.Thread类并重写start0方法
答案:C
(14)下列关于线程优先级的说法中,正确的是( )。
A.线程的优先级是不能改变的
B.线程的优先级是在创建线程时设置的
C.在创建线程后的任何时候都可以设置
D. B和C
答案:C
(15)下列代码中,将引起一个编译错误的行是( )。
1) public class Test{
2) int m, n;
3) public Test(){}
4)
5)
6)
7)
8)
9)
10)
11)
12)} public Test(int a){ m=a;) public static void main(String args0){ Test t1, t2; int j, k; j=0; k=0; t1 = new Test(); } t2 = new Test(j,k);
A.第3行
B.第5行
C.第6行
D.第10行
答案:D
(16)阅读下列代码后
public class Person{
int arr[]=new int[10];
public static void main(String args[ ]){
System.out.println(arr[l]);
正确的说法是( )。
A 编译时将产生错误
B 编译时正确,运行时将产生错误
C 输出零
D 输出空
答案:A
(17) AIDL支持以下哪种数据类型?l)string 2)list 3)map 4)All native java datatype( ){,
A.1,2和3
B.4
C.以上所有
D.都不支持
答案:C
分析:
AIDL 服务只支持有限的数据类型,如果用AIDL服务传递一些复杂的数据就需要做更一步处理,AIDL 服务支持的数据类型如下:
1. Java 的原生类型
2. String 和CharSequence
3. List 和 Map ,List和Map 对象的元素必须是AIDL支持的数据类型;
以上三种类型都不需要导入(import)
4. AIDL 自动生成的接口
需要导入(import)
5. 实现android.os.Parcelable 接口的类. 需要导入(import)。
二、多项选择题
下列各题A.、B.、C.、D.四个选项中,有一个或多个选项是正确的, (l)下列说法正确的有( )。
A. 环境变量可在编译source code时指定.
B.在编译程序时,所能指定的环境变盛不包括class path
C.javac -次可同时编译数个Java源文件
D. javac.exe能指定编译结果要置于哪个目录(directory)
答案:BCD
(2)不能用来修饰interface的有( )
A. private B.public C.protected D.static
答案:ACD
(3)下列说法错误的有( )
A.在类方法中可用this来调用本类的类方法
B。在类方法中调用本类的类方法时可直接调用
C.在类方法中只能调用本类中的类方法
D.在类方法中绝对不能调用实例方法
答案:ACD
请将正确选项填写在答题纸上
(4)下列说法错误的有( )
A. Java面向对象语言容许单独的过程与函数存在
B. Java面向对象语言容许单独的方法存在
C. Java语亩中的方法属于类中的成员(member)
D. Java语言中的方法必定隶属于某…类(对象),调用方法与过程或函数相同 答案:ABC
(5)下列说法错误的有( )。
A.能被java.exe成功运行的java class文件必须有main()方法
B.J2SDK就是Java API
C. Appletviewer.exe可利用jar选项运行Jar文件
D.能被Appletviewer成功运行的java class文件必须有main()方法
答案:BCD
三、判断题
请将每空的正确答案写在答题纸上,答在试卷上不得分。
(1) Java程序中的起始类名称必须与存放该类的文件名相同。(对)
(2) Unicode是用16位来表示一个字的。(对)
(3) 原生类中的数据类型均可任意转换。(对)
三、填空题
请将每空的正确答案写在答题纸上【l】至【25】序号的横线上,答在试卷上不得分。 (l)某二叉树中度为2的结点有18个,则该二叉树中有【1】 二叉树的终端结点(叶子结点)数等于双分支结点数加1。
(2)在面向对象方法中,类的实例称为【2】
(3)诊断和改正程序中错误的工作通常称为【3】
(4)在关系数据库中,把数据表示成二维表,每一个二维表称为【4】
(5)Java 源文件中最多只能有一个【5】 public 类, 其他类的个数不限。
(6)线程在生命周期中要经历5中状态,分别是新建状态(准备)、可运行状态(就绪)、运行状态(运行)。【6】 暂停(阻塞) 状态和终止状态(死亡)。
(7)FileInputStream 是字节流;BufferedWriter是字符流, ObjectOutputStream是 【7】 对象序列化流
(8)当使用Thread t = new Thread(r)创建一个线程时,表达式r instance of Thread 的值为【8】 false 。 r instanceOf Runnable
1.抽象类和接口的区别?
抽象类:
1)抽象方法,只有行为的概念,没有具体的行为实现。使用abstract
关键字修饰,没有方法体。子类必须重写这些抽象方法。
2)包含抽象方法的类,一定是抽象类。
3)抽象类只能被继承,一个类只能继承一个抽象类。
接口:
1)全部的方法都是抽象方法,属型都是常量
2)不能实例化,可以定义变量。 3)接口变量可以引用具体实现类的实例 4)接口只能被实现,一个具体类实现接口,必须实现全部的抽象方法 5)接口之间可以多实现 6)一个具体类可以实现多个接口,实现多继承现象
2.列举你所知道的线程同步的方法:
1)wait():让线程等待。将线程存储到一个线程池中。
2)notify():唤醒被等待的线程。通常都唤醒线程池中的第一个。让被唤醒的线程处于临时阻塞状态。
3)notifyAll(): 唤醒所有的等待线程。将线程池中的所有线程都唤醒。
3.equals()方法和“==”操作符的区别是什
么?重写equals()方法的时候,我们还需要重写哪些方法?为什么?
“==”比较的是一个对象在内存中的地址值,栈中的内容是否相同
equals()是针对引用的,比较的是引用类型的内容一样不一样,堆中的内容是否相同
重写equals()方法的时候,需重写hashcode方法,这样比较的时候,比较的是两个对象的hash值,不同对象的hash值不同。
7.写一个函数计算但参数为n(n很大)时
的值1-2+3-4+5-6+7„„+n。(提示:考虑程序执行效率)
private static void jisuan(int n) {
int sum=0;
if(n%2==0){
sum=-(n/2);
(11)简述String和StringBuffer、ArrayList和LinkedList、HashMap和HashTable的特点及区别。
答:String 对象的长度一旦定义就固定就不可以改变,对于已经存在的String对象的修改都是创建一个新的对象,然后把新的值存进去,String类不能被继承。StringBuffer是一个可变对象,当对它进行修改的时候不会像String那样重新建立对象。它只能通过构造函数来建立对象。另外StringBuffer还是一个线程安全的类。
ArrayList是实现了基于动态数组的数据结构用于,LinkedList基于连表的数据结构,二者都可以存储对象的引用。对于随机访问get和set,ArrayList优于LinkedList,因为LinkedList要移动指针。对于新增和删除操作add和remove,LinkedList比较占优势,因为ArrayList要移动数据。
HashMap是Hashtable的轻量级实现(非线程安全的实现),他们都完成了Map接口,主要区别在于HashMap允许空(null)键值(key),由于非线程安全,在只有一个线程访问的情况下,效率要高于Hashtable。
HashMap允许将null作为一个entry的key或者value,而Hashtable不允许。 HashMap把Hashtable的contains方法去掉了,改成containsvalue和containsKey。因为contains方法容易让人引起误解。
Hashtable继承自Dictionary类,而HashMap是Java1.2引进的Map interface的一个实现。
最大的不同是,Hashtable的方法是Synchronize的,而HashMap不是,在多个线程访问Hashtable时,不需要自己为它的方法实现同步,而HashMap 就必须
} System.out.println(""+sum); }else{ sum=-(n-1)/2+n; System.out.println(""+sum); }
为之提供外同步。
点击下页还有更多>>>javaweb常见面试题及参考答案#p#副标题#e#
Hashtable和HashMap采用的hash/rehash算法都大概一样,所以性能不会有很大的差异。就HashMap与HashTable主要从三方面来说。
一.历史原因:Hashtable是基于陈旧的Dictionary类的,HashMap是Java 1.2引进的Map接口的一个实现
二.同步性:Hashtable是线程安全的,也就是说是同步的,而HashMap是线程序不安全的,不是同步的
三.值:只有HashMap可以让你将空值作为一个表的条目的key或value 求质数的多种优化方式
答:一般我们求质数时都会去计算小于某一个数N的质数而不会不加限定,现在我们以求小于N的质数来说一说优化方式。在我们求质数的过程中一般会用到两种方法试除法和筛选法两种,现在下来说一下试除法:
①.判断小于N的数X是否是质数,就是从2一直尝试到X-1,这种做法效率最差,并不可取----->②如果X是质数,那么它如果不能被小于X/2的数整除即可,这样算法效率提高一些---->③除了2以外,所有的质数都只能是奇数,所以我们可以将数X先试除2,然后尝试从3一直到X/2的所有奇数----->④其实判断一个数是否是质数,只需判断一个数能不能被除了1
----->⑤最后,我们可以利用前面求出来的质数来判断,我们只需判断X能不能
再说筛选法:对于使用筛选法的优化主要是从空间上考虑
①定义一个容器,将数据放入容器中,然后遍历其中的数据,将是合数的数据删除,最后剩余的就是质数了------>②我们可以定义一个布尔类型的数组容器,将其中的值都赋值为true,在筛选的过程中将不是质数的数作为数组的下标将对应元素的值改为false,最后取出值为true的元素的下标即可----->③构造定长的byte数组,数组的每个byte存储8个布尔值,这样性能是不是又有了提
(14) 简述几种排序方式(至少四种,可以从以下各个方面来比较这几种算法,例如从时间复杂度和空间复杂度)
高呢。冒泡排序:(Bubble Sort)冒泡排序方法是最简单的排序方法。这种方法的基本思想是,将待排序的元素看作是竖着排列的“气泡”,较小的元素比较轻,从而要往上浮。在冒泡排序算法中我们要对这个“气泡”序列处理若干遍。所谓一遍处理,就是自底向上检查一遍这个序列,并时刻注意两个相邻的元素的顺序是否正确。如果发现两个相邻元素的顺序不对,即“轻”的元素在下面,就交换它们的位置。显然,处理一遍之后,“最轻”的元素就浮到了最高位置;处理二遍之后,“次轻”的元素就浮到了次高位置。在作第二遍处理时,由于最高位置上的元素已是“最轻”元素,所以不必检查。一般地,第i遍处理时,不必检查第i高位置以上的元素,因为经过前面i-1遍的处理,它们已正确地排好序。
插入排序(Insertion Sort)插入排序的基本思想是,经过i-1遍处理后,L[1..i-1]己排好序。第i遍处理仅将L插入L[1..i-1]的适当位置,使得L[1..i]又是排好序的序列。要达到这个目的,我们可以用顺序比较的方法。首
先比较L和L[i-1],如果L[i-1]≤ L,则L[1..i]已排好序,第i遍处理就结束了;否则交换L与L[i-1]的位置,继续比较L[i-1]和L[i-2],直到找到某一个位置j(1≤j≤i-1),使得L[j] ≤L[j+1]时为止。
选择排序(Selection Sort)选择排序的基本思想是对待排序的记录序列进行n-1遍的处理,第 i 遍处理是将[i..n]中最小者与位置 i 交换位置。这样,经过 i 遍处理之后,前 i 个记录的位置已经是正确的了。
快速排序(Quick Sort)快速排序是对冒泡排序的一种本质改进。它的基本思想是通过一趟扫描后,使得排序序列的长度能大幅度地减少。在冒泡排序中,一次扫描只能确保最大数值的数移到正确位置,而待排序序列的长度可能只减少
1。快速排序通过一趟扫描,就能确保某个数(以它为基准点吧)的左边各数都比它小,右边各数都比它大。然后又用同样的方法处理它左右两边的数,直到基准点的左右只有一个元素为止。
一、专业知识
1、a0=1、a1=1、a2=a1+a0、a3=a2+a1,以
此类推,请写代码用递归算出a30?
3、简述值类型和引用类型的区别
值类型包括简单 类型、结构体类型和枚举类型,引用类型包括自定义类、数组、接口、委托等
他们两在内存中存储的方式不同,值类型以栈的方式存储的,引用类型以堆的方式;前者是真实的存储空间,后者只是存储地址的引用!
4、简述类中的静态成员和非静态成员的区别
静态变量使用 static 修饰符进行声明,在类被实例化时创建,通过类进行访问。不带有 static 修饰符声明的变量称做非静态变量,在对象被实例化时创建,通过对象进行访问。一个类的所有实例的同一静态变量都是同一个值,同一个类的不同实例的同一非静态变量可以是不同的值。静态函数的实现里不能使用非静态成员,如非静态变量、非静态函数等。
5、什么是单例?
一个类中只有一个实例并且自行化向整个系统提供这个实例叫单例
下面程序段的输出结果是:
Void complicatedex(){
int x=20,y=30;
boolean b; b=x>50&&y>60||x>50&&y<-6||x<-50&&y>60||x<-50&&y<-60; system.out.println(b);}
结果为:fasle
super()和this()的区别
Super()指父类的无参构造方法,this()指当前类的无参构造方法,两者都必须写在构造方法的第一句
2、Java中public,private,protected,和默认
的区别
a、private修饰词,表示成员是私有的,只有自身可以访问;
b、protected,表示受保护权限,体现在继承,即子类可以访问父类受保护成员,同时相同包内的其他类也可以访问protected成员。
c、无修饰词(默认),表示包访问权限(friendly, java语言中是没有friendly这个修饰符的,这样称呼应该是来源于c++ ),同一个包内可以访问,访问权限是包级访问权限;
d、public修饰词,表示成员是公开的,所有其他类都可以访问;
3、描述一下java的事件委托机制和垃圾回
收机制
java事件委托机制:一个源产生一个事件时,把他送到一个或多个监听器那里,在这种机制种,监听器只是等待,一旦收到事件,处理事件并返回;
Java垃圾回收:是一种动态存储管理技术,它自动地释放不再被程序引用的对象,按照特定的垃圾收集算法来实现资源自动回收的功能。当一个对象不再被引用的时候,内存回收它占领的空间,以便空间被后来的新对象使用,以免造成内存泄露。
什么是java序列化,如何事件java序列化 序列化就是一种用来处理对象流的机制,所谓对象流也就是将对象的内容进行流化。可以对流化后的对象进行读写操作,也可将流化后的对象传输于网络之间。序列化是为了解决在对对象流进行读写操作时所引发的问题。
public class Cat implements Serializable {}„„
Try{FileOutputStream fos = new FileOutputStream("catDemo.out"); ObjectOutputStream oos = new ObjectOutputStream(fos);
System.out.println(" 1> " + cat.getName());
cat.setName("My Cat");
oos.writeObject(cat);
oos.close();
}catch(Exception e){„}„„
overload和overrride的区别。Overloaded
的方法和是否可以改变返回值类型
override(重写,覆盖)
1、方法名、参数、返回值相同。
2、子类方法不能缩小父类方法的访问权限。
3、子类方法不能抛出比父类方法更多的异常(但子类方法可以不抛出异常)。
4、存在于父类和子类之间。
5、方法被定义为final不能被重写。
overload(重载,过载)
1、参数类型、个数、顺序至少有一个不相同。
2、不能重载只有返回值不同的方法名。
3、存在于父类和子类、同类中。
Overloaded的方法不能改变返回值类型
final类有什么特点
该类不能被继承
写出下面代码的输出结果
Package test;
Public class OuterClass{
Private class InterClass{
Public InterClass{
System.out.println(“interClass create”);}}
Public OuterClass(){
InterClass ic= new InterClass();
System.out.println(“outerclass create”);}
Public static void main(String[] args){
OuterClass oc=new OuterClass();}}
输出:
interClass create
Outerclass create
如何格式化日期
java日期的格式话主要用的是SimpleDateFormat df = new SimpleDateFormat();
ArrayList Vector LinkedList 的存储性
能好特性,HashMap和Hashtable的区别
ArrayList和Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢,Vector由于使用了synchronized方法(线程安全),通常性能上较ArrayList差,而LinkedList
使用双向链表实现存储,按序号索引数据需要进行前向或后向遍历,但是插入数据时只需要记录本项的前后项即可,所以插入速度较快。
1.HashTable的方法是同步的,HashMap未经同步,所以在多线程场合要手动同步HashMap这个区别就像Vector和ArrayList一样。
2.HashTable不允许null值(key和value都不可以),HashMap允许null值(key和value都可以)。
3.HashTable有一个contains(Object value),功能和containsValue(Object value)功能一样。
4.HashTable使用Enumeration,HashMap使用Iterator。
String是基本数据类型吗?
不是
多线程有几种实现方式,同步有几种实现方
式,stop()和suspend()方法为什么不推荐使用
多线程有两种实现方法,分别是继承Thread类与实现Runnable接口 同步的实现方面有两种,分别是synchronized,wait与notify"
反对使用stop(),是因为它不安全。它会解除由线程获取的所有锁定,而且如果对象处于一种不连贯状态,那么其他线程能在那种状态下检查和修改它们。结果很难检查出真正的问题所在。suspend()方法容易发生死锁。 调用suspend()的时候,目标线程会停下来,但却仍然持有在这之前获得的锁定。此时,其他任何线程都不能访问锁定的资源,除非被"挂起"的线程恢复 运行。对任何线程来说,如果它们想恢复目标线程,同时又试图使用任何一个锁定的资源,就会造成
死锁。所以不应该使用suspend(),而应在自己的 Thread类中置入一个标志,
1.请阐述一下你对Java多线程中同步的几
种使用方式,区别,以及其重要性。
同步有两种实现方式
1.同步方法
2.同步代码块
多线程的同步时为了能够保证关键数据在单位时间能只能有一个线程操作,保证数据的同步性,安全性
2.final ,finally , finalize 的区别。
Final 有最终的不可改变的意思,可以用来修饰基本数据使之成为常
量,该常量只能在编译期进行修改 。
当修饰对象时,则该对象引用不能改变,但该对象本身可以做修改。 当修饰方法时,表示该方法在被继承时不能被修改,或覆盖
当修饰类时,表示该类不会别别的类继承
Finally 用于在Try-catch-finally语句中 finally 中的代码块时必须执行的
finalize 当某个对象要被当做垃圾回收时,会调用finalize()方法,该方法用于检查对象不被运行状态的对象引用或间接地引用
sleep() 和wait()有什么区别?
Sleep()是线程中的一个方法,该方法用于控制自身线程的流程,当
执行sleep()方法睡眠时保持对象锁。
Wait()方法是object类中的一个方法,该方法用于让一个线程处于
等待状态并释放对象锁,当该线程想要再次执行时需要调用notity
方法唤醒此线程
4. abstact 的method是否可同时是static,
是否可同时是native,是否可同时是synchronized ?
不可以
5当一个线程进入一个对象的Synchronized
方法后,其他线程是否可进入此对象的其他方法
可以去访问非Synchronized方法。
6.当一个对象被当做参数传递到一个方法
后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?
值传递
7.创建一个class对象有几种方法?分别是
什么?
有三种:
1. Class c=Class.for(“java.lang.String”);
2. String str=new Stirng();
Class c=Str.getClass();
3.Class c=String.Class;
9.如何获取一个目录下有多少个文件?
File f=new File(“D:https://”);
Int count=f.list().length;
10.请写出下列代码的输出结果:
FatherClass Create
ChildClass Create
13.当一个对象不再被使用时,如何才能从内
存中消失?
将该对象引用值为空
点击下页还有更多>>>javaweb常见面试题及参考答案#p#副标题#e#
14.请写一个整数组成的矩阵转置程序,及行
变成列,列变成行?
int[][] transponse(int[][] t);
public int[][] transponse(int[][] t){
int [][] f=new int[t[0].length][t.length];
for(int i=0;i
int index=0;
index++;
for(int x=0;i
int m=0;
m++;
f[m][index]=t[i][x];}}
Return f;
1.下列哪些语句关于内存回收的说明是正确的?( b )
A,程序员必须创建一个线程来释放内存
B,内存回收程序负责释放无用内存
C,内存回收程序允许程序员直接释放内存
D,内存回收程序可以在指定的时间释放内存对象
2.下面异常是属于 Runtime Exception 的是( abcd )(多选)
A, ArithmeticException
B, IllegalArgumentException
C, NullPointerException
D, BufferUnderflowException
3.Math.round(11.5)等于多小().Math.round(-11.5)等于多小().( c )
A 11,-11 B 11,-12 C 12,-11 D 12,-12
4.下列程序段的输出结果是:(b )
Void complicatedexpression_r(){
int x=20,y=30;
boolean b;
b=x>50&&y>60||x>50&&y<-60||x<-50&&y>60||x<-50&&y<-60; System.out.println(b);
A,ture B,false C,1 D,011.activity
5.以下程序的运行结果(B )https://[-128~127]从对象池取,超了后新建对象 Integer a = 34556;
Integer b =34556;
If(a==b){
System.out.println(“Equal”);}else{
System.out.println(“Not equal”);}
A.Equal B.Not equal C.无输出 D.编译错误
6.以下程序的运行结果是(B )
public class test{
public static void main(String args[]){
System.out.print(100%3);
System.out.print(“,”);
System.out.print(100%3.0);}}
A.1,1 B.1,1.0 C.1.0,1 D1.0,1.0
7.Java语言中字符串 “学Java” 所占的内存空间是( B)
A.5个字节 B.6个字节 C.7个字节 D.10个字节
Math.round(11.5)等于多少()。Math.round(-11.5)等于多少?(C)
A.11,-11 B.11,-12 C. 12.-11 D.12,-12
8.下列程序段的输出结果是:(B)
void complicatedexpression_r(){
int x=20,y=30;
boolean b;
b=x>50&&y>50&&y<-60||x<-50&&y>60||x<-50&&y<-60;
System.out.println(b);}
A. true B.false C.1 D.0
代码段如下,选项中描述正确的是 A
static int ternary(int s){
int i=s;
return i < 10 ? i * 100 : i * 10 ;}
A 这是个静态方法,不需要实例化就可以被调用
B 返回值是方法临时变量的值
C 返回值等于i * 10
D 返回值等于i * 100
9.如下描述正确的是 AD
A 一个java中只能有一个class是public的
B 如果一个类的构造方法是私有的,那么实例化此类就需要有一个非私有的方法
C protected的方法无法被子类访问
D abstract类不可以直接实例化
10.关于final关键字,正确的是 ABCDE
A. 使用final关键字,是出于设计与效率的考量
B 使用final关键字修饰属性,句柄指向的基础类型是一个常量
C final关键字修饰属性,句柄指向一个对象,则对象不可以改变
D final关键字修饰方法,则此方法不允许覆盖
E final 关键字修饰方法,则此方法不允许重载
11.如下描述正确的是 ABCD
A HashMap使用键值对描述数据
B List和Set都是接口
C List的实现类存储数据允许重复
D Set的实现类存储数据是无序的
E List的实现类存储数据是无序的
12.如下描述正确的是 AD
A 继承Thread类,可以创建一个线程
B run()方法中定义循环部分,并指出循环终结条件
C 每个对象默认都包含了一把锁
D 多线程竞争临界资源,可能会导致死锁
13下面描述正确的是 ABCD
A。 MVC涉及模式中,servlet实现controller功能
B applet浏览器运行的java小程序
C javabean 用于对应数据库中的数据表
D SSH(Struts,Spring ,Hibernate)Spring进行流程控制,Struts进行业务流转,Hibernate进行数据库操作的封装
14.下面说法正确的是 ABD
A 用new 关键字实例化接口,必须实现接口中的所有抽象方法
B 接口中不可以定义私有方法
C 接口中可以定义私有属性
D 类可以实现多个接口
15.下面说法正确的是 ABC
A 调用equal()方法所实现的功能,取决于当前类及其继承树中对此方法的定义。
B java不允许使用者重载操作符
C java中,操作符+针对字符串操作时把字符串相连接的意思。
D java 允许操作符重载
16. UML中哪些图表示系统行为 AE
A.状态图 B.用例图 C.协作图 D.类图 E.活动图 F.时序图
17.如下程序段,正确的是 BD
A abstract class Something {private abstract String doSomething();}
B class Something {Int i;
public void doSomething(){
System.out.println(“i+”+i)}}
C . public class Something{
public static void main (String [] args){
Something s = new Something();
System.out.println(“s.doSomething() returns :”+doSomething());}
public String doSomething(){return “Do something……”}; }
D. abstract class Name {
Private String name ;
Public abstract int test();}
18.下面的java程序编译运行结果是 C
interface A {int x = 0;}
Class B {int x = 1;}
Class C extends B implements A {
Public void pX () {system.out.println(super.x);}
Public static void main (String [] args ){new C ().Px();} }
A 产生运行期错误
B 产生编译期错误
C 程序运行,输出结果为1
D 存续运行,输出结果为0
看过“javaweb常见面试题及参考答案”
浏览量:2
下载量:0
时间:
回答面试题是java程序员个人求职者在求职面试过程中必须完成的环节。下面是读文网小编为大家带来的2017java程序员面试题,相信对你会有帮助的。
一、基本数据结构
1. 队列和栈的区别和常用操作
2. 队列的实现方式(单向链表、双向链表)
3. 基于队列的算法(主要是排序算法:归并排序,二分法插入排序可以做重点(这两个排序通常会被用来做动态有序队列的维护)。至于快速排序,基本上都用现成的程序库,不需要掌握)
4. 图的基本概念 (有向图,无向图)
5. 图的基本表达方法(邻接矩阵,链接表)
6. 图的基本算法
a) 最短路径Dijstra
b) 最小生成树 Prim
7. 树的基本概念(二叉树,平衡树,森林)
8. 树的基本表达方法
9. 树的相关算法
a) 遍历算法(深度优先、广度优先)构
b) 平衡树(B树)
c) 其他算法(Haffman树)
数据库:资料下载
点击下页还有更多>>>2017java程序员面试知识点
#p#副标题#e#
二、基本概念
1. 数据库、表、视图、Sequence、Index
2. 数据类型的区别(Char 和 varchar的区别)
3. 关系 (外键、主键。1:1, 1:n,n:n关系在数据库中的实现)
4. 范式
三、应用
1. 基本Sql语言
2. Outer join (left, right, full)和 inner join
3. Transaction概念
4. Transaction和Connection的关系
四、高级应用
1. DAO模型
2. Connection Pool
3. OR Mapping Tools (Hibernate)
五、基本概念
1. 语言基本概念
a) Abstract,static,和final修饰符
2. 各种不同类型的类型
a) Normal Class
b) Abstract Class
c) Interface
3. 特殊类型
a) Exception (unchecked 和 checked)
b) System
c) Classloader
d) Thread + Runnable
e) Serializable
f) Comparable
g) Cloneable
h) Object
HashCode ()
Equals ()
Clone ()
ToString ()
4. 基本Pattern的实现
a) Singleton
b) Utility class
5. 对象的基本概念
a) Create a object
b) Lifecycle of object
c) Object reference 和Object的关系
存储位置(Heap和Stack)
对象赋值和修改
二、中级概念
1. String的基本操作方法
2. Java. collections中的基本对象
a) Collection
b) List
c) Set
d) Map
e) 两个Utils类:Collections和Arrays
3. Concurrency的基本概念
a) synchronized
b) Thread 和 runnable的基本概念
c) Concurrency (JDK 1.5)的基本使用方法
ReadWriteLock
Thread pool
d) Dead lock的原因和诊断方法
4. 第三方Utils库的使用方法
a) Log4j
b) Commons-xxx
5. Heap和Garbage Collection
a) Object reuse (Object pool, 对基本类型对象,使用Value Of代替new)
b) Memory leak的原因和诊断方法
六、高级概念
1. J2EE/EJB
a) Stateless / Stateful Session Bean
b) Servlet/MVC/struts
c) Webservice (WSDL/SOAP/AXIS/X Fire)
2. Spring framework
a) 基本概念(IoC, AOP)
3. Hibernate
看过“2017java程序员面试题”
浏览量:2
下载量:0
时间:
回答面试题目是java个人求职者在求职面试过程中必须完成的一个重要环节,下面是读文网小编为大家带来的最新的java面试题目及参考答案,相信对你会有帮助的。
我叫xxx,今年21岁,毕业于xx解放军信息工程大学计算机科学与技术专业,拥有扎实的core java基础,良好的编程风格;熟悉jsp+servlet+javabean模式的web开发;熟悉struts,hibernate,spring等开源框架,了解ejb; 熟悉tomcat,jboss服务器等,熟悉基于linux及unix环境下的软件开发;
在校期间有多次社会实践经历,曾参与过学院网上虚拟实验室开发的需求分析,大学期间多次担任多课程的课代表。虽然实际工作经验不是很足,但军校四年培养了我充分的自信心和敬业精神以及扎实的学科基础知识和较强的专业技能,四年军校生活中,我严格要求自己,自觉、遵纪、守时。本人坦诚且有责任心,有独立进取的品性,勤于动手、善于动脑,适应新环境能力很强。能在最短时间内完成从学生到职业工作人员的转型,尽自己最大的努力融入新的工作生活。
请各位考官多多指教,谢谢!
看过“最新的java面试题目及参考答案”
浏览量:2
下载量:0
时间:
对面试题的回答情况会直接影响java个人求职者的求职成效。下面是读文网小编为大家带来的2017java面试题及参考答案,相信对你会有帮助的。
您好!四年的大学生活使我学到了许多东西,我把大部分时间和精力投在学习上,并取得了优异的成绩。在学习方面,我始终认为作为一名学生,学习是最重要的,在大学期间我对学习一直很重视。我态度认真、刻苦,努力钻研,具备了扎实的专业基础知识:熟悉各种应用软件的使用及asp、vb和c语言的程序编写,对教育技术的基本理论和应用相关方面具有较深的理解,也有自己的一定见解。在四年的学习过程中我也掌握了较为有效的学习方法,提高了自身的学习能力,也为以后的继续学习打下了良好的基础。
在工作能力方面。学生工作在大学生活中是一项重要内容,在能力锻炼方面,我积极参加学生工作和社会实践活动,并取得了一定的成绩。我曾担任班长,在工作过程中我认真负责,积极工作,极大地锻炼了我的工作能力和交际能力,积累了许多宝贵的实践经验。获得 “学生工作积极分子”、“优秀学生干部”称号。
思想政治素质方面。积极提高自身思想修养更是大学阶段我们需要去努力做的。在两年多的党内生活和实践中,让我的思想觉悟有了较大的提高,平时关心时事,注意学习党务知识,在实践中不断端正自己的入党动机,以党员的标准来严格要求自己。在这个过程中我更加体会到作为一名党员的责任,也发现了自身的一些不足,每次党内的会议、讨论、生活,都是我的一个成长过程,期间提出的一些问题都能引起我的深入思考,在思考的过程中不断提高自身的思想。
此外,我还积极参加校内的各种活动以及校外的各种社会活动,向实际困难挑战,让我在挫折中成长,借以去磨练自己。
浏览量:2
下载量:0
时间:
回答面试题是java个人求职者在面试过程中必须完成的一项工作。下面是读文网小编为大家带来的最新的java面试题及参考答案,相信对你会有帮助的。
Switch能否用string做参数?
在 Java 7 之前, switch 只能支持byte,short,char,int 或者其对应的封装类以及 Enum 类型。在JAVA 7中,String 支持被加上了。
equals与==的区别:
==是判断两个变量或实例是不是指向同一个内存空间
equals是判断两个变量或实例所指向的内存空间的值是不是相同
Object有哪些公用方法?
方法equals测试的是两个对象是否相等
方法clone进行对象拷贝
方法getClass返回和当前对象相关的Class对象
方法notify,notifyall,wait都是用来对给定对象进行线程同步的
Java的四种引用,强弱软虚,用到的场景
强引用:如果一个对象具有强引用,它就不会被垃圾回收器回收。即使当前内存空间不足,JVM也不会回收它,而是抛出 OutOfMemoryError 错误,使程序异常终止。如果想中断强引用和某个对象之间的关联,可以显式地将引用赋值为null,这样一来的话,JVM在合适的时间就会回收该对象
软引用:在使用软引用时,如果内存的空间足够,软引用就能继续被使用,而不会被垃圾回收器回收,只有在内存不足时,软引用才会被垃圾回收器回收。
弱引用:具有弱引用的对象拥有的生命周期更短暂。因为当 JVM 进行垃圾回收,一旦发现弱引用对象,无论当前内存空间是否充足,都会将弱引用回收。不过由于垃圾回收器是一个优先级较低的线程,所以并不一定能迅速发现弱引用对象
虚引用:顾名思义,就是形同虚设,如果一个对象仅持有虚引用,那么它相当于没有引用,在任何时候都可能被垃圾回收器回收。
使用场景:
利用软引用和弱引用解决OOM问题:用一个HashMap来保存图片的路径和相应图片对象关联的软引用之间的映射关系,在内存不足时,JVM会自动回收这些缓存图片对象所占用的空间,从而有效地避免了OOM的问题
通过软可及对象重获方法实现Java对象的高速缓存:比如我们创建了一Employee的类,如果每次需要查询一个雇员的信息。哪怕是几秒中之前刚刚查询过的,都要重新构建一个实例,这是需要消耗很多时间的。我们可以通过软引用和 HashMap 的结合,先是保存引用方面:以软引用的方式对一个Employee对象的实例进行引用并保存该引用到HashMap 上,key 为此雇员的 id,value为这个对象的软引用,另一方面是取出引用,缓存中是否有该Employee实例的软引用,如果有,从软引用中取得。如果没有软引用,或者从软引用中得到的实例是null,重新构建一个实例,并保存对这个新建实例的软引用
Hashcode的作用,与 equal 有什么区别
同样用于鉴定2个对象是否相等的,java集合中有 list 和 set 两类,其中 set不允许元素重复实现,那个这个不允许重复实现的方法,如果用 equal 去比较的话,如果存在1000个元素,你 new 一个新的元素出来,需要去调用1000次 equal 去逐个和他们比较是否是同一个对象,这样会大大降低效率。hashcode实际上是返回对象的存储地址,如果这个位置上没有元素,就把元素直接存储在上面,如果这个位置上已经存在元素,这个时候才去调用equal方法与新元素进行比较,相同的话就不存了,散列到其他地址上
String、StringBuffer与StringBuilder的区别
String 类型和 StringBuffer 类型的主要性能区别其实在于 String 是不可变的对象
StringBuffer和StringBuilder底层是 char[]数组实现的
StringBuffer是线程安全的,而StringBuilder是线程不安全的
Override和Overload的含义去区别
Overload顾名思义是重新加载,它可以表现类的多态性,可以是函数里面可以有相同的函数名但是参数名、返回值、类型不能相同;或者说可以改变参数、类型、返回值但是函数名字依然不变。
就是ride(重写)的意思,在子类继承父类的时候子类中可以定义某方法与其父类有相同的名称和参数,当子类在调用这一函数时自动调用子类的方法,而父类相当于被覆盖(重写)了。
抽象类和接口的区别
一个类只能继承单个类,但是可以实现多个接口
接口强调特定功能的实现,而抽象类强调所属关系
抽象类中的所有方法并不一定要是抽象的,你可以选择在抽象类中实现一些基本的方法。而接口要求所有的方法都必须是抽象的
解析XML的几种方式的原理与特点:DOM、SAX、PULL
DOM:消耗内存:先把xml文档都读到内存中,然后再用DOM API来访问树形结构,并获取数据。这个写起来很简单,但是很消耗内存。要是数据过大,手机不够牛逼,可能手机直接死机
SAX:解析效率高,占用内存少,基于事件驱动的:更加简单地说就是对文档进行顺序扫描,当扫描到文档(document)开始与结束、元素(element)开始与结束、文档(document)结束等地方时通知事件处理函数,由事件处理函数做相应动作,然后继续同样的扫描,直至文档结束。
SAX:与 SAX 类似,也是基于事件驱动,我们可以调用它的next()方法,来获取下一个解析事件(就是开始文档,结束文档,开始标签,结束标签),当处于某个元素时可以调用XmlPullParser的getAttributte()方法来获取属性的值,也可调用它的nextText()获取本节点的值。
wait()和sleep()的区别
sleep来自Thread类,和wait来自Object类
调用sleep()方法的过程中,线程不会释放对象锁。而 调用 wait 方法线程会释放对象锁
sleep睡眠后不出让系统资源,wait让出系统资源其他线程可以占用CPU
sleep(milliseconds)需要指定一个睡眠时间,时间一到会自动唤醒
JAVA 中堆和栈的区别,说下java 的内存机制
基本数据类型比变量和对象的引用都是在栈分配的
堆内存用来存放由new创建的对象和数组
类变量(static修饰的变量),程序在一加载的时候就在堆中为类变量分配内存,堆中的内存地址存放在栈中
实例变量:当你使用java关键字new的时候,系统在堆中开辟并不一定是连续的空间分配给变量,是根据零散的堆内存地址,通过哈希算法换算为一长串数字以表征这个变量在堆中的"物理位置”,实例变量的生命周期--当实例变量的引用丢失后,将被GC(垃圾回收器)列入可回收“名单”中,但并不是马上就释放堆中内存
局部变量: 由声明在某方法,或某代码段里(比如for循环),执行到它的时候在栈中开辟内存,当局部变量一但脱离作用域,内存立即释放
JAVA多态的实现原理
抽象的来讲,多态的意思就是同一消息可以根据发送对象的不同而采用多种不同的行为方式。(发送消息就是函数调用)
实现的原理是动态绑定,程序调用的方法在运行期才动态绑定,追溯源码可以发现,JVM 通过参数的自动转型来找到合适的办法。
JAVA 垃圾回收机制
什么是垃圾回收机:释放那些不再持有引用的对象的内存
怎么判断一个对象是否需要收集?
引用计数(最简单古老的方法):指将资源(可以是对象、内存或磁盘空间等等)的被引用次数保存起来,当被引用次数变为零时就将其释放的过程
对象引用遍历(现在大多数 jvm 使用的方法):对象引用遍历从一组对象开始,沿着整个对象图上的每条链接,递归确定可到达(reachable)的对象。如果某对象不能从这些根对象的一个(至少一个)到达,则将它作为垃圾收集
几种垃圾回收机制
标记回收法:遍历对象图并且记录可到达的对象,以便删除不可到达的对象,一般使用单线程工作并且可能产生内存碎片
标记-压缩回收法:前期与第一种方法相同,只是多了一步,将所有的存活对象压缩到内存的一端,这样内存碎片就可以合成一大块可再利用的内存区域,提高了内存利用率
复制回收法:把现有内存空间分成两部分,gc运行时,它把可到达对象复制到另一半空间,再清空正在使用的空间的全部对象。这种方法适用于短生存期的对象,持续复制长生存期的对象则导致效率降低。
分代回收发:把内存空间分为两个或者多个域,如年轻代和老年代,年轻代的特点是对象会很快被回收,因此在年轻代使用效率比较高的算法。当一个对象经过几次回收后依然存活,对象就会被放入称为老年的内存空间,老年代则采取标记-压缩算法
讲讲 Java 中的集合有多少种,区别是什么?
ArrayList、LinkedList、Vector的区别:ArrayList 和Vector底层是采用数组方式存储数据,Vector由于使用了synchronized方法(线程安全)所以性能上比ArrayList要差,LinkedList使用双向链表实现存储,随机存取比较慢
HashMap的底层源码实现:当我们往HashMap中put元素的时候,先根据key的hashCode重新计算hash值,根据hash值得到这个元素在数组中的位置(即下标),如果数组该位置上已经存放有其他元素了,那么在这个位置上的元素将以链表的形式存放,新加入的放在链头,最先加入的放在链尾。如果数组该位置上没有元素,就直接将该元素放到此数组中的该位置上。
Fail-Fast机制:在使用迭代器的过程中有其他线程修改了map,那么将抛出ConcurrentModificationException,这就是所谓fail-fast机制。这一机制在源码中的实现是通过modCount域,modCount顾名思义就是修改次数,对HashMap内容的修改都将增加这个值,那么在迭代器初始化过程中会将这个值赋给迭代器的expectedModCount。在迭代过程中,判断modCount跟expectedModCount是否相等,如果不相等就表示已经有其他线程修改了Map.
HashMap和 HashTable 的区别:
HashTable比较老,是基于Dictionary 类实现的,HashTable 则是基于 Map接口实现的
HashTable 是线程安全的, HashMap 则是线程不安全的
HashMap可以让你将空值作为一个表的条目的key或value
看过“最新的java面试题及参考答案”
浏览量:2
下载量:0
时间:
教师资格证面试问题及答案大全(下半年)
教师资格证面试是教师资格证获取过程中至关重要的一项考试,它主要考察考生的教育教学能力、综合素质以及语言表达能力。以下是小编为大家收集的关于教师资格证面试问题及答案大全的相关内容,供大家参考!
1、报到
考生需要携带准考证及身份证原件在规定时间进入考场,注意自己准考证上的考试时间,每个人都有规定的考试时间,迟到15分钟会被认为是缺考,所以要携带好准考证和身份证提前到达候考点,以免找不到地方错过考试时间。
2、候考
进入考点之后,上交与考试无关的随身物品,保留一支笔,准考生,身份证等。在候考室要进行考生信息的核对,核实是否是本时段本科目的考生。
3、抽题
考生在备课前登录面试测评系统,进行相关操作随机抽题,考场工作人员会将你抽到的题打印出来,考生拿着这张纸和草稿纸到别的教室进行备课。
4、备课
考生持备课纸、试题清单进入备课室,撰写教案(或演示活动方案),备课20分钟。备课期间不会提供教材,更不会允许将教材带进去。你需要在备课纸上写出:课题、试讲大纲以及在脑子中过一遍待会试讲流程。
5、回答规定问题
面试考官通过面试测评系统从试题库中随机抽取2道规定问题,基本上问题都与教育、教师职业和课堂有关,时间5分钟左右。
6、试讲
根据之前准备的教案进行试讲,时间为10分钟。试讲部分是考生专业水平和教学能力展示的部分。这部分最主要的是教学重难点把握准确,教学过程流畅,体现互动性课堂,教学活动设计合理。
7、答辩
试讲结束以后,考官会根据考生讲课的内容,或者讲课暴露出来的问题进行提问。一般会提问1~2个问题,提的问题大部分都是试讲的内容。时间为5分钟。
8、评分
考官会根据考生的面试表现进行综合评分,然后填写《面试评分表》,经组长签字确认,同时通过面试测评系统提交评分。
浏览量:3
下载量:0
时间:
Java经典面试题及答案(面试必看)
Java面试题涵盖的范围非常广泛,根据不同的岗位和公司要求,面试题可能会有所不同。为了让面试者能顺利应对面试官的问题,下面小编为大家收集整理了关于Java经典面试题及答案的相关内容,希望对大家有所帮助!
Java是一门面向对象的编程语言,其主要用途有以下几个方向:
大数据领域、
Hadoop以及其他大数据处理技术普遍用的都是Java,当然其他语言也有用到,基于Java?的?HBase和Accumulo以及ElasticSearchas。但Java在此领域并未占太大空间,但只要Hadoop和ElasticSearchas能够成长壮大,Java依然有潜力占据一部分。
Android应用?
如果你想知道Java应用在哪里,打开你的安卓手机或者任何的App,它们完全是用有着谷歌Android API的Java编程语言编写的,这个API和JDK非常相似。前几年安卓刚开始起步而到今日已经很多Java程序员是安卓App的开发者。顺便一提,虽然我们之前的文章提到的关于安卓App是如何工作的,即安卓使用了不同的Java虚拟机和不同的封装,但是代码仍然是用Java编写的。
网站领域
Java同样也在电子商务和网站开发上有着广泛的运用。你可以运用很多RESTfull架构,这些架构是用Spring MVC,Struts 2.0和类似的框架开发出来的。甚至简单的Servlet,JSP和Struts在各种政府项目也是备受欢迎,许多政府,医疗,保险,教育,国防和其他部门的网站都是建立在java之上的。
浏览量:2
下载量:0
时间:
2023年Java经典面试题及答案(200道)
Java面试题涵盖的范围非常广泛,根据不同的岗位和公司要求,面试题可能会有所不同。为了让面试者能顺利应对面试官的问题,下面小编为大家收集整理了关于2023年Java经典面试题及答案(200道)的相关内容,希望对大家有所帮助!
简历:简历的编写要真实可信,突出个人亮点,格式无误,排版干净,控制简历页数。
面试准备:了解公司的基本情况、业务范围、市场占比等。
技术准备:熟悉Java开发岗位所需知识,包括Java基础、JVM、多线程、Mysql、Spring、Spring Boot、Spring Cloud等。
非技术准备:了解非技术性方面的问题,如知识结构、沟通能力、学习能力等。
浏览量:8
下载量:0
时间:
军队文职面试问题及答案大全(最新)
军队文职人员是指在军队中担任文职职务的人员,通常是指在军队中担任非现役职务的文职人员。他们通常担任着重要的职务,如行政管理、技术支持、科研开发、教育培训等。以下是小编为大家收集的关于军队文职面试问题及答案大全的相关内容,供大家参考!
基本条件
1、 具有中华人民共和国国籍;
2、 年满18周岁;
3、 符合军队招录聘用文职人员的政治条件;
4、 符合岗位要求的资格条件;
5、 身体和心理健康;
6、符合法律、法规规定的其他条件。
素质条件
1、政治条件:报考人员应当符合军队招录聘用文职人员政治考核的标准条件。
2、 学历条件:报考人员应当具有普通高等学校全日制本科以上学历。报考在艰苦边远地区、岛屿的岗位,以及特殊岗位可不作全日制要求。驻艰苦边远地区、岛屿的单位定向招考军队烈士、因公牺牲军人的配偶子女,未婚军队烈士的兄弟姐妹,以及现役军人配偶,除教学、科研、工程、医疗专业技术岗位外,报考学历要求可以放宽至大学专科。报考护理、艺术、体育岗位的,可为大学专科以上学历。
3、资格条件:报考人员应当具有招考岗位要求的职称和职业资格。除法律法规明确规定的外,报考初级专业技术岗位,以及博士研究生报考中级专业技术岗位的,不作资格条件要求。
4、 身体条件:报考人员应当符合军队招录聘用文职人员体格检查的标准条件。
5、年龄条件:报考科级副职以下管理岗位或者初级专业技术岗位的,年龄不超过35周岁;报考科级正职管理岗位或者中级专业技术岗位的,年龄不超过45周岁。
6、 其他条件:在符合以上基本条件的前提下,具体报考条件由用人单位根据招考岗位需要确定。
浏览量:6
下载量:0
时间:
军队文职考试面试真题及答案解析
军队文职人员是指在军队中担任文职职务的人员,通常是指在军队中担任非现役职务的文职人员。他们通常担任着重要的职务,如行政管理、技术支持、科研开发、教育培训等。以下是小编为大家收集的关于军队文职考试面试真题及答案的相关内容,供大家参考!
军队文职是指在军民通用、非直接参与作战且社会化保障不宜承担的军队编制岗位从事管理工作和专业技术工作的非现役人员,是军队人员的组成部分。
文职人员在军队和社会生活中,依法享有国家工作人员相应的权利,履行相应的义务。文职人员的管理,坚持党管干部、党管人才原则,贯彻公开、平等、竞争、择优方针,依照法定的权限、条件、标准和程序进行。
军队对文职人员实行分级分类管理,提高管理效能和科学化水平。军队建立与国家公务员和事业单位工作人员制度相衔接、具有比较优势的文职人员管理、保障制度和机制。
浏览量:2
下载量:0
时间:
2023军队文职面试真题带答案(解析)
军队文职人员的招聘和管理通常由军队相关部门负责,他们的招聘条件和程序通常比较严格,需要经过资格审查、考试考核、体检政审等环节。以下是小编为大家收集的关于2023年军队文职面试真题带答案的相关内容,供大家参考!
部队文职人员考试难,越早准备考试越好。军队文职考试内容多且特殊:公基内容广,里面还有军事理论知识,体现军队考试特色。专业考试内容难度不小,考察内容广泛。军队文职笔试分为公共科目笔试和专业科目笔试,目前,公共科目笔试的考试科目一般为岗位能力和公共知识两部分。
提前了解考试内容
提前先了解一下考试内容详情。主要了解公共科目的整体情况,比如考多长时间,考什么内容,都要提前进行了解。
学习公共科目基础理论知识
要对公共科目基础的理论知识进行学习,并搭配一些题目进行练习,根据公共科目的各个版块进行针对性复习,还要不断练习题目。
进行大量题目训练
进行大量题目训练,加深对理论的学习,把题目练熟练会,之后就可以进行模拟考试训练,提升对考场的感觉,不致于考试过于慌乱,平时多加练习,考试也会更加顺利。
突击专业科目
专业科目的学习,建议大家公告出了以后突击专业科目,因为公告出之前,对自己能报考的岗位并不清楚,如果过早学习,可能会导致不知从何入手。当然这个只是一个建议,如果你有更好的想法可以按照自己的来。
浏览量:4
下载量:0
时间: