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

一、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)接口,抽象类可继承实体类,但前提是实体类必须有明确的构造函数(但是和实体类的继承一样,也要求父类可继承,并且拥有子类可访问到的构造器。)。

时间: 2024-10-13 08:11:56

初级JavaWeb攻城狮面试指导(二)的相关文章

初级JavaWeb攻城狮面试指导

一.概要 初级JavaWeb工程师的面试准备 Java基础知识面试指导 Java面向对象面试指导 JSP面试指导 MySQL数据库基础面试指导 Servlet面试指导 二.初级JavaWeb工程师的面试准备 初级JavaWeb工程师是职业发展的第一步 组成人群:应届计算机专业毕业生和初学者 工作内容:能够独立完成指定的模块开发 面试形式:笔试和问答 要求:熟知所涉及的知识点,具有独立编码能力 主要知识点: Java基本语法知识 Java面向对象 JSP与前端知识 MySQL数据库基础知识 Ser

【大前端攻城狮之路·二】Javascript&QA?程师

今天给大家分享的主题的是Javascript&QA?程师.看到这个主题,可能有人问:前端开发完就OK了,剩下的丢给测试就行,哪里还需要关心这些?但事实上呢,测试是前端开发非常重要的环节,也是迈向高级前端工程师的必经之路! 本文主要分为一下四个部分: · 单元测试 · 性能测试 · 功能测试 · 安全测试 一. 单元测试 单元测试(unit testing),是指对程序中的最小可测试单元进行检查和验证.对于单元测试中单元的含义,一般来说,要根据实际情况去判定其具体含义,如C语言中单元指一个函数,J

Java攻城狮面试考题

1 <html> 2 <head> 3 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 4 <title></title> 5 <style type="text/css"> 6 </style> 7 </head> 8 <body> 9 <s

攻城狮在路上(叁)Linux(二十九)--- 完整备份工具:dump以及restore

一.dump命令: 该命令既可以针对整个文件系统进行备份,也可以仅针对目录来备份.还可以指定不同的备份等级(-0~-9共10个等级). dump -W:列出在/etc/fstab中具有dump设置的分区是否备份过. 命令格式: dump [-Suvj] [-level] [-f 备份文件] 待备份数据 参数说明: -S:仅列出后面的待备份数据所需要的磁盘空间大小. -u:将这次dump的时间记录到/etc/dumpdates文件中. -v:将dump的文件过程显示出来. -j:加入bzip2的支

攻城狮在路上(叁)Linux(二十五)--- linux内存交换空间(swap)的构建

swap的功能是应付物理内存不足的状况,用硬盘来暂时放置内存中的信息. 对于一般主机,物理内存都差不多够用,所以也就不会用到swap,但是对于服务器而言,当遇到大量网络请求时或许就会用到. 当swap被使用的时候,主机的硬盘灯就会闪烁不停. 本篇介绍两种方式:1.设置一个swap分区   2.创建一个虚拟内存的文件. 一.使用物理分区构建swap: 1.首先是分区: A.fdisk /dev/sda; <== 根据后续提示创建一个分区. B.修改分区的ID,因为fdisk默认将分区的ID作为文件

攻城狮在路上(叁)Linux(二十六)--- linux文件系统的特殊查看与操作

一.boot sector 与 super block的关系: 1.boot sector用于存放引导装载程序,占用1024个字节. 2.super block的大小也为1024字节. 3.若block大小为1k,则boot sector和super block各占一个block. 4.若block大于1K(2K/4K)时,则两者都位于第一个block中. 二.磁盘空间的浪费问题:暂不考虑. 三.利用GUN的parted命令进行分区行为: 因为fdisk不支持高于2TB的分区. 命令格式: pa

攻城狮在路上(叁)Linux(二十四)--- linux设置开机挂载及镜像文件挂载

虽然可以手动进行文件系统的挂载,但是每次都手动挂载就会很麻烦,开机挂载的目的就是实现文件系统的自动挂载. 一.开机挂载:/etc/fstab及/etc/mtab 主要是通过修改/etc/fstab文件的配置来实现. fstab是开机时的设置,实际文件系统的挂载是记录到/etc/mtab和/proc/mounts这两个文件中. 1.系统挂载的限制: A.根目录/必须挂载,而且一定是最先挂载的,要先于其他mount point. B.其他挂载点必须为已新建的目录,可以任意指定. C.所有挂载点在同一

攻城狮在路上(叁)Linux(二十七)--- 压缩与打包之常见的压缩命令

前面讲到,linux中的后缀名没有特殊的意义,一般是作为不同文件类型的标识而已.下面是与打包.压缩相关的后缀名介绍: *.z:compress程序压缩文件 *.gz:gzip程序压缩文件 *.bz2:bzip2压缩文件 *.tar:tar打包,未压缩 *.tar.gz:tar打包,经过gzip压缩 *.tar.bz2:tar打包,经过bzip2压缩 一般经过打包或者压缩处理的文件通过后缀名来进行区别. 一.compress:该命令比较古老,centos默认未安装,可以使用gzip代替. 二.gz

攻城狮在路上(叁)Linux(十二)--- Linux的目录与路径

一.相对路径与绝对路径: A.绝对路径:由根目录/开始写起的路径,例如 /usr/share/doc B.相对路径:不是由根目录/开始写起的路径. 二.目录的相关操作: 1.cd: 目录切换 cd ~vbird; cd ~;<==切换到当前用户的工作目录 cd ..;<==返回到上一级目录 cd -;(回到上一个目录) cd /usr/share; cd share; 2.pwd:显示当前所在的目录 pwd -p; <== 显示出实际的目录,而非仅是连接文件本身的目录名. 3.mkdir