7-17 大华一面(java 基础)

1. 讲一下 java 和其他语言的区别,说下 java 的平台无关性,如何做到一次编译,到处运行

关于java 的特性,可以从 java 的优点来说。

java 特点:

1) java 是纯面向对象的语言。一切皆对象,它能够直接反应现实生活中的对象,比如火车,人,动物等,因此开发人员更容易编写程序。

2)平台无关性。可以做到 “ 一次编译,到处执行 ”。因为 java 是解释型语言,编译器将 Class 文件编译成与平台无关的字节码,然后在虚拟机上执行,所以有很好的移植性。(如何实现跨平台的)

3)java 提供了丰富的内置函数,简化了开发人员的工作,缩短了项目周期。比如 Java 语言提供了对多线程的支持,提供了对网络通信的支持,最重要的是提供了垃圾回收器,人开发人员从内存管理中解放出来。(接下来可能会问多线程和 GC 机制。 )

4)java 语言具有良好的安全性和健壮性。java 语言经常被用在网络环境中,为了增强安全性, Java 语言提供了防止恶意代码攻击的安全机制(例如数组边界检查 和 byte code 校验)。此外 java 的强类型机制,垃圾回收器,异常处理和安全检查机制使其具有很好的健壮性。

5)Java 语言提供了 Web 应用开发支持。例如 Applet,servlet 和 JSP,都可以用来开发 web 应用程序,Socket、RMI 可以用来开发分布式运用程序的类库。

6)程序严谨整洁。 Java 语言去掉了 c++ 中难以理解的,容易混淆的特性,比如头文件、指针、结构等。

问题延伸:

1) java 如何实现跨平台的?

注意: 跨平台的是p不是 jvm 。 JVM 是用 c++ /c 开发的,是编译后的机器码,不能跨平台,不同平台上需要安装不同的 JVM。

所以,答: 我们编写的 JAVA 源码,编译后会生成一种 .class 文件,称为字节码文件.Java 虚拟机(JVM)就是负责将字节码文件翻译成特定平台下的机器码然后执行,也就是说,只要在不同平台上,安装对应的 JVM 虚拟机,就可以运行字节码,运行我们编写的 Java 程序。

而这个过程,我们编写的 Java 程序不做任何的改变,仅仅通过 JVM 这一“中间层”,就能在不同的平台上运行,真正实现了“一次编译,到处运行” 的目的。

参考链接

2)你讲一下 GC 机制,说说有哪几种回收算法

2. 讲一下 GC 机制,为什么需要 GC 机制,你了解哪几种 GC 算法

相关问题:

1.full GC和old GC区别

10.jvm在gc时产生了oom你是如何解决的?

JVM的垃圾回收为什么采用分代GC。跟语言有关系吗?

3. java 的反射

(1)反射的概述

什么是反射?

反射就是把 Java 类中的各个部分,映射成一个个对象,拿到这些对象之后我们可以做一些事情。既然反射是反射的 Java 类中的各个组成部分,那么 Java 类中的组成部分有哪些呢? 例如成员变量、构造方法、方法、包等信息,利用反射技术就能把这些组成部分反射成一个个对象,这个功能就能叫做 Java 的反射机制。

官方概述这样说: Java 反射机制就是在运行状态中,都能知道类的属性和方法以及能够调用对象的属性方法,并能修改对象的属性;这种动态获取信息以及动态调用对象的方法的功能就是 java 的反射机制。

反射能做什么?

有句经典的话,反射是框架设计的灵魂,一般来说反射就是做框架的,或者可以说是做一些抽象比较高的底层代码。

反射机制的作用:

1、反编译:.class–>.java

2、通过反射机制访问java对象的属性,方法,构造方法等;

怎样得到反射的类?

其实我们可以把反射理解为类的一个解刨,想解刨它,就必须拿到它,java代码是存储在后缀名是 .java 的文件中,它被编译后生成 .class文件,Java 认为一切皆对象,java 就把 .class文件也抽象成一种类,这个类就是 Class。

通过查看 Class 的API,发现有一种静态方法 forName(String className),通过该方法可以得到想要的反射类了。

反射机制获取类有三种方法:

1. Class.forName( “com.cj.test.Person” )

2. Object ——> getClass() ==>> 对象.getClass()

3. 类名.class

如何解刨类?

类一般由成员变量(字段/属性),方法,构造方法这三部分组成,由API 中得知,Class 提供了如下方法:

public Constructor getConstructor(Class>…parameterTypes)

public Method getMethod(String name,Class>… parameterTypes)

public Field getField(String name)

public Constructor getDeclaredConstructor(Class>…parameterTypes)

public Method getDeclaredMethod(String name,Class>… parameterTypes)

public Field getDeclaredField(String name)

这些方法分别用于帮咱们从类中解剖出构造函数、方法和成员变量(属性)。

然后把解剖出来的部分,分别用Constructor、Method、Field对象表示。

反射的额外用法

1)反射方法的其它使用之—通过反射运行配置文件内容

需求:

当我们升级这个系统时,不要Student类,而需要新写一个Student2的类时,这时只需要更改pro.txt的文件内容就可以了。代码就一点不用改动

2)通过反射越过泛型检查

泛型用在编译期,编译过后泛型擦除(消失掉)。所以是可以通过反射越过泛型检查的

4. java 的重写与重载?

重写

重写其实就是子类中把父类本身的方法重新写一遍。子类继承了父类原有的方法,但有时子类并不想原封不动的继承父类的方法,所以在方法名、参数类型、返回类型形同的情况下,对方法体就行修改或者重写,这就是重写。其中注意,子类函数的访问修饰权限不能少于父类的。

重写总结:

1) 发生在子类和父类之间

2)方法名、参数列表、参数类型、返回类型必须相同

3)访问修饰权限要大于父类的被重写的访问修饰权限。(public > protected > default > private)

4)重写方法不能抛出新的检查异常或者抛出比被重写方法更宽泛的检查型异常。

重载

在同一个类中,同名的方法如果有不同的参数列表(参数类型不同、参数个数不同、甚至参数顺序不同)则视作重载。同时重载对返回类型没什么要求,可以相同,也可以不相同,而且不能通过返回参数类型是否形同判断是否重载。

重载总结

1)重载是一个类中多态性的表现。

2)重载要求同名方法的参数列表不同(参数类型、参数个数、参数顺序)

3)重载的时候,返回类型可以相同,也可以不同,无法以返回类型作为判别是否重载。

重载(overload)与重写(overwrite)的区别(面试重点)

方法的重载与重写都是实现多态的方式,区别在于前者(重载)实现的是编译时的多态性,后者(重写)实现的时运行时的多态性。重载是发生在一个类中,同名的方法如果有不同的参数列表(参数类型,参数个数,参数顺序不同)则视为重载;重写发生在子类和父类之间,重写要求子类被重写放噶与父类被重写方法的方法名、参数列表相同,有兼容的返回类型,比父类被重写方法更好访问,不能比父类被重写的方法声明更多的异常。重载对返回类型没什么要求,不能根据返回类型进行区分。

5.Java 的多态

一句话概括就是,事务在运行过程中存在不同的状态。

多态的前提:

要有父类继承关系。

2)子类要重写父类的方法。

3)父类引用指向子类的对象。( Person stu = new student())

多态的特点:

成员变量: 编译运行皆看左边(父类)

**成员方法:**编译看左边(父类),运行看右边。(动态绑定的)

静态方法: 编译运行皆看左边(父类)

以上三个提点也充分体现了多态的三个前提:

1)有父类继承关系

2)子类重写父类的方法

3)父类引用指向子类的对象。

**可扩展到:**方法的重写Overriding和重载Overloading是Java多态性的不同表现.

重写Overriding是父类与子类之间(运行时)多态性的一种表现,重载Overloading是一个类中(编译时)多态性的一种表现.

大华java面试经验_大华面试(Java 基础)相关推荐

  1. 有赞Java面试经验_有赞面试记录二

    今天进行了有赞三面和四面以及HR面,记录下面试官问到的问题 0. 选择题:CND的作用有哪些? A. 缓存 B. 资源合并 C. 就近访问 我的选择:A.C 面试官问:什么是就近访问? 我的回答:我们 ...

  2. 爱奇艺java面试经验_爱奇艺java后端一面、二面面经

    约的下午4点面试,一直等到5点40.. 一面面试官说话很着急,应该是着急吃饭

  3. 大华管理平台用户名_大华HOC智慧物流可视化联网追溯解决方案,助力物流行业更高效...

    点击上方蓝字关注"大华行业" 随着电商产业的高速发展,物流已经成为人们生活中必不可少的一环.同时,作为国民经济的重要组成部分,物流行业所涉及到的领域也越来越广. 问题凸显 对监管部 ...

  4. java大作业设计_Java程序设计_大作业.doc

    Java程序设计_大作业.doc Java程序设计_大作业 专业:计算机科学与技术专业 学号:1245713131 姓名: 2014年12月10日 目录 作业内容:2 1.IPublisherDao接 ...

  5. java 下载加速_一种基于Java的大文件下载加速方法与流程

    本发明涉及java/多线程技术领域,涉及一种加速文件下载装置,具体提供一种基于java的大文件下载加速方法. 背景技术: 现有的常用下载方式是基于浏览器的单线程下载.这种单线程下载的方式,是通过htt ...

  6. java 课程地位_“致敬经典 一往无前”JAVA大咖论坛解读!——长沙课工场实力...

    原标题:"致敬经典 一往无前"JAVA大咖论坛解读!--长沙课工场实力 2020年8月24日,高薪工作,匠心课程,创新服务--课工场2020年夏季课程发布系列的第4场"致 ...

  7. java开发五年面试经验_只有经验丰富的开发人员才能教您有关Java的5件事

    java开发五年面试经验 深入研究Java之前需要了解的所有内容的概述 有许多工具,方法,环境和功能会改变您处理代码的方式,而这些通常是在学年期间不会遇到的. 虽然它在Java开发世界中迈出了第一步, ...

  8. 大数据开发和java的前景_大数据开发和javaEE后端开发哪个就业前景好?

    javaEE后端开发和大数据开发(Hadoop Spark...)哪个就业前景好? 本科计算机毕业一年了最近在自学想选择一个方向努力有JavaSE基础想知道这两个方向市场怎么样我知道javaEE后端开 ...

  9. java session使用_使用Neo4j和Java进行大数据分析 第2部分

    本文的第一部分介绍了Neo4j及其Cypher查询语言.如果您已经阅读了第1部分,那么您已经了解了为什么Neo4j和其他图形数据库特别受社交图形或网络中用户之间关系建模的影响.您还在开发环境中安装了N ...

最新文章

  1. 服务部署如何做到高可用?这份“三级跳”秘籍送给你\n
  2. YII 测试环境搭建
  3. 计算特征数据matlab代码,科学网—MATLAB特征提取代码 - 蒋样明的博文
  4. 转载:Windows核心编程---空指针赋值分区
  5. OJ和PTA常见的错误代码含义
  6. Python的if判断与while循环
  7. effective c++ 第六章
  8. java实时推送goeasy_JAVA Web实时消息后台服务器推送技术---GoEasy
  9. FreeSWITCH(二) - 安装部署、试用
  10. Angular导入导出Excel控件简介
  11. Omega network
  12. win10多台计算机共享文件夹设置密码,win10系统给共享文件夹设置密码的操作方法...
  13. 陈老师排课12A版的手工调课的方法
  14. java 引用数据类型Scanner类 Random类
  15. 容器中启动ssh状态总是sshd is not running
  16. Java高级编程5-姜国海
  17. [概念]图像分割的历史 + UNet-Family
  18. 2万字好文!手把手教你实现 Docker 部署 Redis 集群
  19. C# e.Handled的用法,控制文本框键盘输入
  20. PMP报考资格、报考程序及考试形式

热门文章

  1. 【操作系统】-同步互斥-【2013真题】-某博物馆最多容纳500人...
  2. 交流电压和电流数据记录器的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  3. 工作效率提升技巧三:做事的心态
  4. C/C++版本更迭历程
  5. android原生输入法皮肤,面向Android平台的输入法皮肤引擎的设计与实现
  6. 电信重组唤醒“冬眠”的SP
  7. 我的LinkedIn领英之路,如何高效开发外贸客户
  8. echart x轴标签偏移_坐标轴名称位置偏移的问题
  9. python一键电影搜索与下载_[懒人福利]用Python进行[天堂电影]下载资源的搜索
  10. 单片机C语言C51的输入输出