初级Java攻城狮面试指导(二)

简介:

一、Java面向对象必会知识点

    Java的核心是面向对象编程,所有的java程序都是面向对象的。需要看清Java的本质,从复杂的表象中寻找普遍的规律,并深刻理解Java的核心思想。

    1.面向对象的特点总结

    封装:隐藏在对象的属性和实现细节,仅对外提供公共的访问方式

    继承:在一个类基础上定义一个新类,原有的类叫父类,新生成的类叫子类

    多态:事物存在多种体现的形态

    面向对象程序设计的优点是:可重用性、可扩展性、可管理性

    2.类与对象特性总结

    类与对象的概念:

    类是具体事物的抽象,在概念上的定义

    对象是该类事物实实在在存在的个体

    类方法的特点:  

    匿名对象:

    当对象的方法只被调用一次时,可以使用匿名对象来完成

    可以将匿名对象作为实际参数进行传递

    构造函数与构造代码块:

    构造代码块给所有对象进行统一初始化,构造函数给对象初始化

     构造代码块中定义的是不同对象共性的初始化内容

    接口:

    接口与接口之间是可以进行多继承的

    接口可以传递一些模块交互的信息,因为没有需要实现的代码,所以比较安全

    接口可以定义一些规范,这些规范是定制的标准,它把服务的定义者和实现者分开

    Object类:

    3.变量的特点总结

    变量相关知识点:

    成员变量与局部变量:

    成员变量定义在类中,在整个类中都可以被访问,成员变量随着对象的建立而建立,存在于对象所在的堆内存中,成员变量都有默认的初始化值

    局部变量只能定义在局部范围内,比如函数内,语句内。局部变量存在于栈内存中,局部变量作用的范围结束,空间就会被自动释放。局部变量没有默认的初始化值。

    实例变量与类变量:

    示例变量随着对象的建立而建立,实例变量随着对象的建立而存在于堆内存中。

    类变量随着类的加载而存在于方法区中

    静态变量

    静态变量是随着static关键字来修饰的

    变量的声明周期

    类变量的声明周期最长,随着类的消失而消失

    实例变量的声明周期随着对象的消失而消失

    

二、Java面向对象知识点精华

    Java面向对象20个知识点精华:

    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.如果一个类中含有抽象方法,则此类必须为抽象类,如果抽象类的子类不为抽象类,则子类必须实现父类所有的所有抽象方法。抽象方法不能用静态方法和最终方法。抽象方法只有函数头的声明,而用分号来代替方法体,没有大括号。

    15.this变量用在一个方法的内部,指向当前对象,当前对象指的是调用当前正在执行的方法的的那个对象。super变量是直接指向父类的构造方法,用来引用父类中的变量和方法。

    16.如果要引用一个包中的多个类,可以用星号来代替。使用星号只能表示本层次的所有类,而不能包括子层次下的类。经常需要用两条语句来引入两个层次的类:

    import java.awt.*;

    import java.awt.event.*;

    17.关于访问修饰符:

    类中限定为public的成员可以被所有的类访问。

    类中限定为private的成员只能被这个类本身访问。

    类中限定为protected的成员可以被这个类本身,它的子类,以及同一个包中的其它类访问。

    用private protected修饰的成员可以被该类本身访问,也可以被该类的所有子类访问。 

    默认访问控制符规定只能被同一个包中的类访问和引用,不能被其他包的类访问。

    18.注意:abstract和private,static,final,native不能并列修饰同一个方法。

          abstract类中不能有private修饰的域或方法

         static方法不能处理非static的域

    19.重载方法的参数必须不同,或者是参数个数不同,或者是参数类型不同。

    20.在java中,一个类获取某一接口定义的功能并不是通过直接继承这个接口的属性和方法实现的。因为接口中的属性都是常量,接口的方法都是没有方法体的抽象方法,没有具体定义操作。   


三、Java面向对象面试案例解析

    1.用自己的语言表述面向对象的特征:

    抽象

    封装

    继承

    多态

    本题不能简单地回答以上四个要点,还要深入的进行解释。

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

    继承是一种连接类的层次模型,并且允许和鼓励类的重用。它提出了一种明确、表示性的方法。对象的一个新类可以从现有的一个类中派生,这个过程称为类继承。新类继承了原始类的特性,新类称为原始类的派生类,也是子类。而原始类称为新类的基类,也叫父类。派生类可以从基类那里继承方法和实例变量,并且类可以修改或增加新的方法,使其更适合特殊的需要。

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

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

    2.Overload和Override有什么区别?

    首先要讲清楚Overload和Override的定义,然后再描述它们的区别

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

    3.abstract class和interface有什么区别?

    这道题考查我们对抽象类和接口方面的知识点

    abstract class是抽象类,interface是接口

    声明方法的存在而不去实现它的类叫抽象类,它是一个用于创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的情况;不能创建abstract类的实例,然而可以创建一个变量,其类型是一个抽象类,并让它指向具体子类的一个含义;不能有抽象构造函数或抽象静态方法。abstract类的子类对它们的父类中的所有抽象方法提供实现,否则它们也是抽象类,取而代之,在子类中实现该方法,直到其行为的其他类可以在类中实现这些方法。

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

    4.当一个对象被当作参数传递到一个方法后,此方法可以改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?

    当一个对象实例作为一个参数被传递到方法中时,参数的值就是该对象的引用。对象的内容可以在被调用的方法中改变,但对象的引用时永远不会改变的。

    5.abstract的method是否同时是static,是否可同时是native,是否可同时是synchronized?

    abstract用于声明抽象的方法,抽象方法并没有方法内容,不能被直接调用,必须在子类Overriding后才可以被使用。所以访问被abstract修饰的方法要依赖具体的对象实例,而被static修饰的方法是被直接访问的。这就引发了逻辑上的冲突。同时还要注意父类中是静态方法,子类中不能覆盖为非静态方法。

    native用来声明本地方法,该方法的实现由非java语言实现,比如说C语言。一般用于Java与外界环境交互或与操作系统交互。native可于其他的Java修饰符连用,但是abstract除外,因为用native修饰过的方法是由实现体的,但是用abstract修饰过的方法显然没有实现体。

    sychronized用于防止多个线程同时调用一个对象的该方法。从sychronized的功能也可以看出使用它的前提是该方法可以被直接调用,显然与abstract不能联用。abstract与synchronized不能同时使用

    答案:都不能。

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

    接口可以继承接口。抽象类可以实现(implements)接口,抽象类可继承实体类,但前提是实体类必须有明确的构造函数(但是和实体类的继承一样,也要求父类可继承,并且拥有子类可访问到的构造器。)。

    

    


本文转自yeleven 51CTO博客,原文链接:http://blog.51cto.com/11317783/1775912

相关实践学习
云安全基础课 - 访问控制概述
课程大纲 课程目标和内容介绍视频时长 访问控制概述视频时长 身份标识和认证技术视频时长 授权机制视频时长 访问控制的常见攻击视频时长
相关文章
|
21天前
|
Java 程序员
java线程池讲解面试
java线程池讲解面试
38 1
|
1天前
|
安全 Java
就只说 3 个 Java 面试题 —— 02
就只说 3 个 Java 面试题 —— 02
8 0
|
1天前
|
存储 安全 Java
就只说 3 个 Java 面试题
就只说 3 个 Java 面试题
7 0
|
11天前
|
Java 关系型数据库 MySQL
大厂面试题详解:Java抽象类与接口的概念及区别
字节跳动大厂面试题详解:Java抽象类与接口的概念及区别
33 0
|
20天前
|
存储 缓存 算法
Java入门高频考查基础知识4(字节跳动面试题18题2.5万字参考答案)
最重要的是保持自信和冷静。提前准备,并对自己的知识和经验有自信,这样您就能在面试中展现出最佳的表现。祝您面试顺利!Java 是一种广泛使用的面向对象编程语言,在软件开发领域有着重要的地位。Java 提供了丰富的库和强大的特性,适用于多种应用场景,包括企业应用、移动应用、嵌入式系统等。下是几个面试技巧:复习核心概念、熟悉常见问题、编码实践、项目经验准备、注意优缺点、积极参与互动、准备好问题问对方和知其所以然等,多准备最好轻松能举一反三。
46 0
Java入门高频考查基础知识4(字节跳动面试题18题2.5万字参考答案)
|
24天前
|
Java 程序员 API
java1.8常考面试题
在Java 1.8版本中,引入了很多重要的新特性,这些特性常常成为面试的焦点
42 8
|
2月前
|
存储 关系型数据库 MySQL
2024年Java秋招面试必看的 | MySQL调优面试题
随着系统用户量的不断增加,MySQL 索引的重要性不言而喻,对于后端工程师,只有在了解索引及其优化的规则,并应用于实际工作中后,才能不断的提升系统性能,开发出高性能、高并发和高可用的系统。 今天小编首先会跟大家分享一下MySQL 索引中的各种概念,然后介绍优化索引的若干条规则,最后利用这些规则,针对面试中常考的知识点,做详细的实例分析。
238 0
2024年Java秋招面试必看的 | MySQL调优面试题
|
2月前
|
存储 算法 Java
铁子,你还记得这些吗----Java基础【拓展面试常问题型】
铁子,你还记得这些吗----Java基础【拓展面试常问题型】
45 1
|
2月前
|
NoSQL Java 关系型数据库
凭借Java开发进阶面试秘籍(核心版)逆流而上
最近参加了面试或者身边有朋友在面试的兄弟有没有发现,现在的面试不仅会问八股文,还会考察框架、项目实战、算法数据结构等等,需要准备的越来越多。 其实面试的时候,并不是要求你所有的知识点都会,而是关键的问题答到点子上!这份《Java 开发进阶面试秘籍(核心版)》由 P8 面试官整体把控,目前已经更新了 30 万字! 资料中涵盖了一线大厂、中小厂面试真题,毕竟真题都是技术领域最经典的基础知识和经验沉淀的汇总,非常有必要学习掌握!双重 buff 叠加,offer 接到手软~ 点击此处取,这可能是你到目前为止领取的最具含金量的一份资料! 整套资料涵盖:Spring、Spring
|
2月前
|
存储 缓存 Java
面试官:什么是Java内存模型?
面试官:什么是Java内存模型?
108 0
面试官:什么是Java内存模型?