java实体类转map_十五道经典面试题-JAVA基础篇

十五道JAVA基础面试题送给有需要的童鞋,但是不得不多提醒一句,打铁还需自身硬,计算机软件这个行业,技术和学历才是王道。好了,废话不多说,上菜:

4e950dfda244fb1f79e72c2d744bb1cc.png

一:面向对象的特征有哪些方面

1. 抽象:抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。抽象包括两个方面,一是过程抽象,二是数据抽象。

2. 继承:继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法。对象的一个新类可以从现有的类中派生,这个过程称为类继承。新类继承了原始类的特性,新类称为原始类的派生类(子类),而原始类称为新类的基类(父类)。派生类可以从它的基类那里继承方法和实例变量,并且类可以修改或增加新的方法使之更适合特殊的需要。

3. 封装:封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面。面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护的接口访问其他对象。

4. 多态性:多态性是指允许不同类的对象对同一消息作出响应。多态性包括参数化多态性和包含多态性。多态性语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名问题。

Person p = new Student();

p.a(); p.b(); ((Student)p).c();

二:int 和 Integer(包装) 有什么区别

Java 提供两种不同的类型:引用类型和原始类型(或内置类型)。Int是java的原始数据类型,Integer是java为int提供的封装类。Java为每个原始类型提供了封装类。

原始类型封装类booleanBoolean charCharacter byteByte shortShort intInteger longLong floatFloat doubleDouble

引用类型和原始类型的行为完全不同,并且它们具有不同的语义。引用类型和原始类型具有不同的特征和用法,它们包括:大小和速度问题,这种类型以哪种类型的数据结构存储,当引用类型和原始类型用作某个类的实例数据时所指定的缺省值。对象引用实例变g量的缺省值为 null,而原始类型实例变量的缺省值与它们的类型有关。

break 和continue的区别:

break:跳出循环,不再执行剩余部分。

continue:停止当次循环,回到循环起始处,进入下一次循环操作。continue语句之后的语句将不在执行。

三:说出ArrayList,Vector, LinkedList的存储性能和特性

ArrayList和Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢,Vector由于使用了synchronized方法(线程安全),通常性能上较ArrayList差,而LinkedList使用双向链表实现存储,按序号索引数据需要进行前向或后向遍历,但是插入数据时只需要记录本项的前后项即可,所以插入速度较快。

四: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算法都大概一样,所以性能不会有很大的差异。

五:Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型?

Overload:重载:1方法名相同 2参数列表不同(参数个数,参数类型,参数顺序) 3与返回值无关

Override:重写: 1方法名相同 2参数列表也同 3一般发生在子类 4与返回值无关

方法的重写Overriding和重载Overloading是Java多态性的不同表现。重写Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding)。子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被“屏蔽”了。如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading)。Overloaded的方法是可以改变返回值的类型

六:abstract class和interface有什么区别?

public abstract A

{

public abstract b();

public void c()

{

sss

}

}

1抽象类中,既能包含抽象方法,又可以包含 非抽象方法

2 接口中 只能是 public abstarct方法(即使没有表名 public abstract,也会默认是public abstarct)

3 抽象类中 可以不包含抽象方法

4如果类中 有抽象方法,则次类必须是抽象类

5 用途:抽象类 ,用于一个模板(例如,可以把对数据库的操作 封装成一个 抽象的工具类, 以后要用…..); 接口,用于标准(比如DAO、SERVICE层 需要先定义一个 接口用于指定增删改查标准)。

声明方法的存在而不去实现它的类被叫做抽象类(abstract class),它用于要创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的情况。不能创建abstract 类的实例。然而可以创建一个变量,其类型是一个抽象类,并让它指向具体子类的一个实例。不能有抽象构造函数或抽象静态方法。Abstract 类的子类为它们父类中的所有抽象方法提供实现,否则它们也是抽象类为。取而代之,在子类中实现该方法。知道其行为的其它类可以在类中实现这些方法。接口(interface)是抽象类的变体

在接口中,所有方法都是抽象的。多继承性可通过实现这样的接口而获得。接口中的所有方法都是抽象的,没有一个有程序体。接口只可以定义static final成员变量。接口的实现与子类相似,除了该实现类不能从接口定义中继承行为。当类实现特殊接口时,它定义(即将程序体给予)所有这种接口的方法。然后,它可以在实现了该接口的类的任何对象上调用接口的方法。由于有抽象类,它允许使用接口名作为引用变量的类型。通常的动态联编将生效。引用可以转换到接口类型或从接口类型转换,instanceof 运算符可以用来决定某对象的类是否实现了接口。

七:short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错? short s1 = 1; s1 = s1 + 1; (s1+1运算结果是int型,需要强制转换类型,这样子才可以正确的编译) short s1 = 1; s1 += 1;(可以正确编译)

+=、-=、*=、/= 运算符拥有一个内置转换器,当左右两边都是整数时,会自动将等号右边 转为等号左边的类型

37735f84e924e9f56365c012047a9d81.png

八:Math.round(11.5)等於多少? Math.round(-11.5)等於多少?

四舍五入 11.7—》12 11.4—》11 :特点 +0.5后 取整

Math.round(11.5)==12 Math.round(-11.5)==-11 round方法返回与参数最接近的长整数,参数加1/2后求其floor.

九:String s = new String("xyz");创建了几个String Object?

两个或一个。

1个:如果执行此句之前,常量池里已经存在XYZ,则只通过new产生一个对象;

2个:如果执行句之前,常量池中不存在XYZ,则先根据"xyz"给常量池中产生一个“xyz”,之后再根据new 产生一个”xyz”

两个一个是”xyz”,一个是s对”xyz”的引用

十:接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承实体类(concrete class)?

接口可以继承接口。抽象类可以实现(implements)接口,抽象类可以继承实体类,但前提是实体类必须有明确的构造函数。

十一:数组有没有length()这个方法? String有没有length()这个方法?数组没有length()这个方法,有length的属性。String有length()这个方法

十二:请说出你所知道的线程同步的方法。

wait():使一个线程处于等待状态,并且释放所持有的对象的lock。sleep():使一个正在运行的线程处于睡眠状态,是一个静态方法,调用此方法要捕捉InterruptedException异常。notify():唤醒一个处于等待状态的线程,注意的是在调用此方法的时候,并不能确切的唤醒某一个等待状态的线程,而是由JVM确定唤醒哪个线程,而且不是按优先级。Allnotity():唤醒所有处入等待状态的线程,注意并不是给所有唤醒线程一个对象的锁,而是让它们竞争。

十三:你所知道的集合类都有哪些?主要方法?

最常用的集合类是 List 和 Map。 List 的具体实现包括 ArrayList 和 Vector,它们是可变大小的列表,比较适合构建、存储和操作任何类型对象的元素列表。 List 适用于按数值索引访问元素的情形。 Map 提供了一个更通用的元素存储方法。 Map 集合类用于存储元素对(称作“键”和“值”),其中每个键映射到一个值。

Collection

--List

--ArrayList,LinkedList

--Set

--HashSet、TreeSet

Map

--HashMap

①其中Collection中有public bolean add()方法,因此它的实现类ArrayList、LinkedList。。。都拥有add()方法。。。。除此之外,各个实现类 还拥有一些自身特有的方法,比如LinkedList拥有addFirst()方法。,。

。。。。

② 为了安全,我们还可以给集合加入 泛型,例如

Collection col = new ArrayList();那么col对象 只能用来处理String的元素。

③…List集合的源码 分为两大类,底层为数组 的 和底层为链表的。。。

十四:char型变量中能不能存贮一个中文汉字?为什么?

能够定义成为一个中文的,因为①java中以unicode编码,②一个char占16个位,所以放一个中文是没问题的

可能的解释为一个中文占16位,两个字节。

如果只存储英文/数字,则只需要8位即可;如果存储特殊字符或中文,需要16位。

十五:覆盖(重写,override)和重载(overload)

覆盖:覆盖一个方法并对其重写,以求达到不同的做用!覆盖要注意一下几点:

1) 覆盖的方法标识必须要和被覆盖的方法标志完全匹配!

2) 覆盖方法的返回值必须和被覆盖方法的返回值一致!

3) 覆盖方法所抛得异常必须和被覆盖方法所抛得异常一致或者是其子类!

4) 被覆盖的方法不能为private,否则其子类只是定义了一个方法,并没有对其覆盖!

重写:定义一些名称相同的方法,通过传入参数的不同来区分这些方法,再调用 时,会根据不同的参数样式来选择合适的方法执行!重载要注意一下几点:

1)在使用重载时只能通过不同的参数样式,如:不同参数类型、不同参数个数、 不同参数顺序!

2)不能通过访问权限、返回类型、抛出异常来进行重载!

3)方法的异常类型和数目不会对重载构成影响!

4)对于继承来说,如果父类方法访问权限为private,那么就不能再子类对其重载,如果定义的话也只是定义一个新方法,而不会达到重载的效果

a1bcbe95ed2c5a93d29f2b301c7e240c.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/350756.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++ 指针函数和函数指针

1、指针函数 (1)基本概念 指针函数:顾名思义就是带有指针的函数,即其本质是一个函数,只不过这种函数返回的是一个对应类型的地址。 (2)定义式 type *func(type , type) 如:int…

B树

B树是为磁盘或其他直接存储的辅存设备而设计的一种平衡搜索树。 B树类似于红黑树,但在降低磁盘I/O操作数方面要更好一些。许多数据库系统使用B树或者B树的变种来存储信息。 B树与红黑树的不同之处在于B树的结点可以有很多孩子,从数个到数千个。也就是说&…

如何使用recaptcha_在Spring MVC Web应用程序中使用reCaptcha

如何使用recaptchaCAPTCHA是一个程序,可以生成人类可以通过但计算机程序“ 不能 ”通过的测试并对其进行评分。 所采取的策略之一是向用户显示具有扭曲文本的图像,并且用户应在输入区域中书写文本。 如果显示的文字与用户输入的文字相同,则我…

micropython esp8266教程_(一)ESP8266/nodemcu如何使用MicroPython进行开发

简介 大家都知道ESP8266(nodemcu)可以使用arduino的语法(C)进行开发,也有些小伙伴可能也知道可以使用lua语言进行开发的。但是现在我们也可以使用python来开发esp8266(nodemcu)了。那么这篇教程…

PostGIS之路——几何对象编辑(二)

1、ST_Reverse返回几何对象顶点顺序相反的几何对象。geometry ST_Reverse(geometry g1);示例SQL:SELECT ST_AsText(the_geom) as line, ST_AsText(ST_Reverse(the_geom)) As reverselineFROM(SELECT ST_MakeLine(ST_MakePoint(1,2),ST_MakePoint(1,10)) As the_geom…

C++ cin.sync()和cin.ignore()

cin.sync()的功能是清空缓冲区,而cin.ignore()虽然也是删除缓冲区中数据的作用,但其对缓冲区中的删除数据控制的较精确。 有时候你只想取缓冲区的一部分,而舍弃另一部分,这是就可以使用cin.ignore(),其使用方法是&…

Spring Data对Cassandra 3的支持

名为Ingalls的新Spring Data发布火车的发布引起了我的关注,其中之一是Spring Data Cassandra最终支持Cassandra 3。 因此,我回顾了我的一个旧样本,并尝试了较新版本的Cassandra。 安装Cassandra 第一步是安装本地版本的Cassandra&#xff0c…

第12秒做视频封面:阿里云视频截帧功能

代码&#xff1a; <video src"http://ruilai-course.imreliable.net/fangcao_course/{{results.VideoName}}.mp4"poster"http://ruilai-course.imreliable.net/fangcao_course/{{results.VideoName}}.mp4?x-oss-processvideo/snapshot,t_12000,f_jpg,w_750,…

winform什么时候会调用closed事件_async/await 给程序带来了什么?

如果说async给ASP.NET带来的是处理能力的提高&#xff0c;那么在WinForm中给程序员带来的好处则是最大的。我们再也不用因为要实现异步写回调或者绑定事件了&#xff0c;省事了&#xff0c;可读性也提高了。不信你看下面我们将调用我们那个web service的代码在.NET4.5下实现一下…

Vtk出现Generic Warning时

Generic Warning: In D:\ProgramFiles\VTK\VTK-7.0.0\Rendering\Core\vtkPolyDataMapper.cxx, line 28 Error: no override found for ‘vtkPolyDataMapper’. Warning: In D:\ProgramFiles\VTK\VTK-7.0.0\Rendering\Core\vtkInteractorStyleSwitchBase.cxx, line 43 vtkInte…

Properties 持久的属性集

特点&#xff1a;1、Hashtable的子类&#xff0c;map集合中的方法都可以用。2、该集合没有泛型。键值都是字符串。3、它是一个可以持久化的属性集。键值可以存储到集合中&#xff0c;也可以存储到持久化的设备(硬盘、U盘、光盘)上。键值的来源也可以是持久化的设备。 // 根据ke…

MySQL的简单使用

一&#xff0c;MySQL的使用 (1)启动MySQL服务&#xff08;DOS下输入&#xff09;net start mysql / 停止服务net stop mysql&#xff0c;其中mysql是你的数据库服务器的名字。 (2)登录MySQL:mysql -h localhost -u root -p回车后输入你的数据库登录密码。 出现如上图的信息说…

错误C4996:'std :: _Copy_impl'

编译示例程序时出现 错误C4996&#xff1a;std :: _Copy_impl&#xff1a;使用可能不安全的参数的函数调用(error C4996: std::_Copy_impl:Function call with parameters that may be unsafe) 在于处理器中添加 _SCL_SECURE_NO_WARNINGS

python编程口诀_科学网—Python编程技巧汇总 - 高关胤的博文

正在学习python编程&#xff0c;把一些小技巧记录下来备查 计算技巧 正常的条件语句如下if a>b:caelse:cb 可以写为以下简洁的语句a100b200ca if a>b else bprint(c) 作图 python中可以使用numpy的array来高效处理数组 下面主要列举matplotlib的基本使用方法&#xff0c;…

jsf标签p:ajax_JSF AJAX请求的会话超时处理

jsf标签<p:ajax>JSF AJAX请求的会话超时处理 当我们使用AJAX行为开发JSF应用程序时&#xff0c;在处理Ajax请求的超时情况时&#xff0c;我们可能会遇到问题。 例如&#xff0c;如果您使用的是基于J2EE Form的身份验证&#xff0c;则会话超时后应将正常请求重定向到登录页…

使用javamail发信过程中的一些问题及解决方法

今天在研究javamail发信的过程中&#xff0c;出现了一些小问题&#xff0c;现总结如下&#xff0c;以免后来者走些不必要的弯路&#xff0c;先把完整的能够正常运行的代码示例粘贴如下&#xff1a; 发邮件源代码&#xff1a; package com.hyq.test; import java.util.Propertie…

VIsual Studio编译OpenCV:无法打开python27_d.lib(python36_d.lib)的问题

在用 VS2015 编译 Debug 版的 openCV 源码时&#xff0c;最后一步生成 INSTALL&#xff0c;碰到了下面问题&#xff1a;因为配置 Windows 版 caffe 的需要&#xff0c;我先安装了一个 Anaconda3&#xff08;3.6版本&#xff09;&#xff0c;caffe 最高支支持到 3.5 &#xff0c…

python做硬件自动化测试仪器_基于Python PyVisa和GPIB的硬件测试仪器控制方法

基于Python和GPIB的硬件测试仪器控制方法 背景 在物联网通信时代&#xff0c;嵌入式模块开发越发广泛&#xff0c;自动化测试成为大家老生常谈的话题。对于一些高精度仪器&#xff0c;我们知道它是用GPIB控制用来测试&#xff0c;也希望可以通过一个程序实现自动化控制&#xf…

外点惩处函数法·约束优化问题

版权声明&#xff1a;本文为博主原创文章&#xff0c;未经博主同意不得转载&#xff0c;博客主页 http://blog.csdn.net/i_love_home https://blog.csdn.net/zstu_wangrui/article/details/36242529 外点惩处函数法约束优化问题 外点法惩处函数&#xff08;r添加&#xff0c;SU…

在单元测试和TDD中指定时间的重要性

最近&#xff0c;我一直在写与自动测试有关的更高级的概念&#xff08;主要与Spock有关&#xff09;。 但是&#xff0c;在进行测试培训时&#xff0c;我清楚地看到&#xff0c;通常对特定工具的知识并不是主要问题。 即使使用Spock&#xff0c;也可以编写肿且难以维护的测试&a…