原标题:动力节点整理120道面试问题集锦

题目:120 个 Java 经典面试题和答案(上)

我是动力节点的一名学员,就职于百度,在学习过程中整理了一些常见面试题,希望对大家有所帮助。上课期间老师告诉我们知识是需要分享的,只有分享了自己的知识才可以赢得和别人讨论的机会,这些机会非常重要,因为和技术大牛们讨论技术会让自己对技术理解得更透彻。

我们将要讨论 Java 面试中的各种不同类型的面试题(备注:有些题比较偏)。

下面的章节分为上下两篇,第一篇将要讨论面向对象编程和它的特点,关于 Java 和它的功能的常见问题,Java的集合类,垃圾收集器;第二篇主要讨论异常处理,Java小应用程序,Swing,JDBC,远程方法调用(RMI),Servlet和JSP 。

目录

面向对象分析(OOA)

面向对象设计(OOD)

面向对象编程(OOP)

常见的 Java 问题

Java 线程

Java 集合类

垃圾收集器

面向对象分析(OOA)

是在一个系统的开发过程中进行了系统业务调查以后,按照面向对象的思想来分析问题。OOA 与结构化分析有较大的区别。OOA 所强调的是在系统调查资料的基础上,针对 OO 方法所需要的素材进行的归类分析和整理,而不是对管理业务现状和方法的分析。

【更多 Java 资料下载,可访问动力节点(中国区)官网 www.bjpowernode.com 下载区】

面向对象设计(OOD)

面向对象设计(Object-Oriented Design,OOD)方法是 OO 方法中一个中间过渡环节。其主要作用是对 OOA分析的结果作进一步的规范化整理,以便能够被 OOP 直接接受。 面向对象设计(OOD)是一种软件设计方法,是一种工程化规范。这是毫无疑问的。按照 Bjarne Stroustrup的说法,面向对象的编程范式(paradigm)是[Stroustrup, 97]:

1) 决定你要的类;

2) 给每个类提供完整的一组操作;

3) 明确地使用继承来表现共同点。

由这个定义,我们可以看出:OOD 就是“根据需求决定所需的类、类的操作以及类之间关联的过程”。

OOD 的目标是管理程序内部各部分的相互依赖。为了达到这个目标,OOD 要求将程序分成块,每个块的规模 应该小到可以管理的程度,然后分别将各个块隐藏在接口(interface)的后面,让它们只通过接口相互交 流。比如说,如果用 OOD 的方法来设计一个服务器-客户端(client-server)应用,那么服务器和客户端 之间不应该有直接的依赖,而是应该让服务器的接口和客户端的接口相互依赖。

这种依赖关系的转换使得系统的各部分具有了可复用性。还是拿上面那个例子来说,客户端就不必依 赖于特定的服务器,所以就可以复用到其他的环境下。如果要复用某一个程序块,只要实现必须的接口就 行了。

OOD 是一种解决软件问题的设计范式(paradigm),一种抽象的范式。使用 OOD 这种设计范式,我们可 以用对象(object)来表现问题领域(problem domain)的实体,每个对象都有相应的状态和行为。我们 刚才说到:OOD 是一种抽象的范式。抽象可以分成很多层次,从非常概括的到非常特殊的都有,而对象可能 处于任何一个抽象层次上。另外,彼此不同但又互有关联的对象可以共同构成抽象:只要这些对象之间有 相似性,就可以把它们当成同一类的对象来处理。

面向对象编程(OOP)

面向对象编程(Object Oriented Programming,OOP,面向对象程序设计)是一种计算机编程架构。OOP 的一条基本原则是计算机程序是由单个能够起到子程序作用的单元或对象组合而成。

OOP 达到了软件工程的三个主要目标:重用性、灵活性和扩展性。为了实现整体运算,每个对象都能够接收信息、处理数据和向其它对象发送信息。面向对象编程有很多重要的特性,比如:封装,继承,多态和抽象。下面的章节我们会逐个 分析这些特性。

【更多 Java 资料下载,可访问动力节点(中国区)官网 www.bjpowernode.com 下载区】

封装

封装给对象提供了隐藏内部特性和行为的能力。对象提供一些能被其他对象访问的方法来改变它内部的数 据。在 Java 当中,有 4 种访问权限 对应着三个修饰符:public,private ,protected。每一种修饰符 给其他的位于同一个包或者不同包下面对象赋予了不同的访问权限。

下面列出了使用封装的一些好处:

通过隐藏对象的属性来保护对象内部的状态。 提高了代码的可用性和可维护性,因为对象的行为可以被单独的改变或者是扩展。 禁止对象之间的不良交互提高模块化。参考这个文档获取更多关于封装的细节和示例。

多态

多态是编程语言给不同的底层数据类型做相同的接口展示的一种能力。一个多态类型上的操作可以应用到其他类型的值上面。

继承

继承给对象提供了从基类获取字段和方法的能力。继承提供了代码的重用行,也可以在不修 改类的情况下 给现存的类添加新特性。

抽象

抽象是把想法从具体的实例中分离出来的步骤,因此,要根据他们的功能而不是实现细节来创建类。Java 支持创建只暴漏接口而不包含方法实现的抽象的类。这种抽象技术的主要目的 是把类的行 为和实现细节分离开。

抽象和封装的不同点

抽象和封装是互补的概念。一方面,抽象关注对象的行为。另一方面,封装关注对象行为的 细节。一般是 通过隐藏对象内部状态信息做到封装,因此,封装可以看成是用来提供抽象的 一种策略。

常见的 Java 问题

更多 Java 资料下载,可访问动力节点(中国区)官网 www.bjpowernode.com 下载区】

文章来源:http://www.bjpowernode.com/hyzx/20151209-29.html返回搜狐,查看更多

责任编辑:

动力节点面试题mysql真的难_动力节点整理120道面试问题集锦相关推荐

  1. java面试题对日开发_【埃森哲Java面试】面试的是对日java的后端开发-看准网

    其实对埃森哲不是很了解,在招聘网站上看到之后就填写了申请,本来因为没有对咨询有过经验,以为不会有网测之类的机会,结果就收到了网测,其实应该也不是海发,因为也有人没有收到,总而言之,网测通过之后就会收到 ...

  2. 常见Jvm面试题总结及答案整理 120道(持续更新)

    最新Jvm面试题总结及答案[附答案解析]Jvm面试题及答案2021,Jvm面试题最新面试题,Jvm面试题新答案已经全部更新完了,有些答案是自己总结的,也有些答案是在网上搜集整理的.这些答案难免会存在一 ...

  3. 软件工程java答辩问题_透露一下Java软件工程师面试常见问题集锦之一

    1.面向对象的特征有哪些方面 1.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面.抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节.抽象 ...

  4. (B站动力节点老杜MySQL教程)MySQL课堂笔记-day01.txt

    文章目录 文件来源/资料下载: MySQL课堂笔记-day01.txt 1.sql.DB.DBMS分别是什么,他们之间的关系? 2.什么是表? 3.学习MySQL主要还是学习通用的SQL语句,那么SQ ...

  5. mysql集群多管理节点_项目进阶 之 集群环境搭建(三)多管理节点MySQL集群

    多管理节点MySQL的配置很easy,仅须要改动之前的博文中提高的三种节点的三个地方. 1)改动管理节点配置 打开管理节点C:\mysql\bin下的config.ini文件,将当中ndb_mgmd的 ...

  6. (B站动力节点老杜MySQL教程)MySQL课堂笔记-day03.txt

    文章目录 文件来源/资料下载: MySQL课堂笔记-day03.txt 1.约束 1.1.唯一性约束(unique) 1.2.主键约束 1.3.外键约束 2.存储引擎?(整个内容属于了解内容) 2.1 ...

  7. (B站动力节点老杜MySQL教程)MySQL课堂笔记-day02.txt

    文章目录 文件来源/资料下载: MySQL课堂笔记-day02.txt 1.关于查询结果集的去重? 2.连接查询 2.1.什么是连接查询? 2.2.连接查询的分类? 2.3.在表的连接查询方面有一种现 ...

  8. mysql基础入门 day2 动力节点[老杜]课堂笔记

    day_2 本文原作者为动力节点教学总监杜老师老杜在其课老杜带你学_mysql 入门基础(mysql 基础视频+数据库实战)所写讲课笔记 该文档和其涉及资料见文档末链接 本人将其讲课笔记 txt 下载 ...

  9. 网页制作 HTML设为首页和加入收藏_动力节点Java学院整理

    网页制作 HTML设为首页和加入收藏_动力节点Java学院整理 IE浏览器下如何实现"设为首页","加入收藏"的功能 解决思路: 将指定URL设为首页的功能主要 ...

最新文章

  1. python 访问网页 重定向_Python数据网络采集5--处理Javascript和重定向
  2. 2017年云栖大会-云HBase专场会后资料-欢迎扩散
  3. 用于 Outlook 2003 的删除重复邮件的插件(加载项)
  4. web前端入门学习 css(4)(盒子模型)
  5. 同级子目录下重新设置属性失效
  6. [蓝桥杯][算法提高VIP]质数的后代-质数筛
  7. MAGENTO MOUDLE WEB FRONTEND
  8. mybatis的拦截器及分页机制
  9. 数字化方法基础(三)_导入本地模型
  10. 如何修改SAO用户密码
  11. MongoDb数据库连接操作【详解】
  12. IDEA 社区版下载与安装
  13. php怎么联网,家庭宽带上网连接方式
  14. increment java_Java中的increment()有什么作用?
  15. django databased is locked
  16. OpenAI 宣布将对战 DOTA2 世界冠军 OG,最终决战!
  17. 使用Spark和Pig统计每秒钟微博数量
  18. c# oracle 数据库连接,C#中oracle数据库的连接方法
  19. mysql报文格式_GitHub - YMBo/sflow_traffic: python解析报文(支持格式sflow、gre等)并存储到mysql...
  20. 解决打印机不能打印字体的情况。

热门文章

  1. LifeKeeper 5 for Linux 安装
  2. R16 Type II量化反馈码本的产生
  3. 计算机常见故障ppt,计算机硬件组成与常见故障排错.ppt
  4. 历史上最全的xcode下载地址
  5. 上海蓝光集团ERP系统解决方案
  6. 京东云、新浪微博等专家畅谈Docker未来格局:开放与竞争(上)
  7. WorkPlus 赋能数字政府迈入发展新阶段
  8. src挖掘之Tomcat未授权弱口令+war后门上传
  9. 过检大马下载webshell,360,安全狗。。。
  10. BBR加速 Centos