java面试常考系列四

转载自 java面试常考系列四

题目一

大O符号(big-O notation)的作用是什么有哪些使用方法?

O符号描述了当数据结构里面的元素增加的时候,算法的规模或者是性能在最坏的场景下有多么好。
O符号也可用来描述其他的行为,比如:内存消耗。因为集合类实际上是数据结构,一般使用大O符号基于时间内存和性能来选择最好的实现。大O符号可以对大量数据的性能给出一个很好的说明。

题目二

有序数组和无序数组的区别是什么

1、有序数组最大的好处在于查找的时间复杂度是O(log n),而无序数组是O(n)。

2、有序数组的缺点是插入操作的时间复杂度是O(n),因为值大的元素需要往后移动来给新元素腾位置。相反,无序数组的插入时间复杂度是常量O(1)。

 

题目三

Java集合类框架的最佳实践有哪些?

实践一

根据应用的需要正确选择要使用集合的类型对性能非常重要,所以,如果提前知道元素的大小是固定的,我们就会使Array,而不ArrayList

实践二

对于那些允许指定初始容量的集合。如果能估计出存储的元素的数目,就可以提前设置初始容量,以此来避免重新计算hash值或者是扩容。

实践三

为了类型安全,可读性和健壮性的原因总是要使用泛型。同时,使用泛型还可以避免运行时的ClassCastException。

实践四

使用JDK提供的不变类(immutable class)作为Map的键可以避免为我们自己的类实现hashCode()和equals()方法。

实践五

编程的时候接口优于实现。

实践六

底层的集合实际上是空的情况下,返回长度是0的集合或者是数组,不要返回null。 

题目四

Enumeration接口和Iterator接口的区别有哪些?

1.速度

Enumeration速度是Iterator的2倍

2.内存

Enumeration比Iterator占用更少的内存。

3.安全

Enumeration安全性远远低于Iterator,因为当集合里面的对象正在被Iterator遍历的时候,其他线程无法修改对象。

4.可操作

Enumeration不允许调用者删除底层集合里面的元素,Iterator可以。

题目五

HashSet和TreeSet有什么区别?

区别一

底层存储的数据结构不同HashSet底层用的是HashMap哈希表结构存储,而TreeSet底层用的是TreeMap树结构存储

区别二

有序性不同。HashSet是无序的,而TreeSet是有序的。

区别三

存储时保证数据唯一性依据不同HashSet是通过复写hashCode()方法和equals()方法来保证数据唯一性的,而HashSet通过Compareable接口的compareTo()方法来保证数据唯一性

区别四

时间复杂度不同。HashSet的add()、remove()和contains()方法的时间复杂度是0(1),TreeSet的时间复杂度是0(logn)。

 

题目六

Java中垃圾回收有什么目的?垃圾回收的时机是什么

目的

识别并且丢弃应用不再使用的对象来释放和重用资源。

时机

1.程序员可以手动调用gc但是Java语言规范并不保证GC一定会执行。

2.当应用程序空闲时,即没有应用线程在运行时,GC会被调用。

3.Java堆内存不足时,GC会被调用

 

题目七

System.gc()和Runtime.gc()的作用是什么

这两个方法用来提示JVM要进行垃圾回收。但是,立即开始还是延迟进行垃圾回收是取决于JVM的。GC本身是会周期性的自动运行的,由JVM决定运行的时机,现在的版本有多种更智能的模式可以选择,还会根据运行的机器自动去做选择

 

题目八

finalize()方法什么时候被调用?析构函数(finalization)的目的是什么?

在释放对象占用的内存之前,垃圾收集器会调用对象的finalize()方法。

目的是回收某些对象,清理内存,一般建议在该方法中释放对象持有的资源。

 

题目九

如果对象的引用被置为null,占用内存将在何时被回收

在下一个垃圾回收周期,这个对象将是可被回收的。

题目十

Java堆的结构是什么样子的?什么是堆中的永久代(Perm Gen space)?

JVM的堆是运行时数据区,所有类的实例和数组都是在堆上分配内存。它在JVM启动的时候被创建。对象所占的堆内存是由自动内存管理系统也就是垃圾收集器回收。

堆内存是由存活和死亡的对象组成的。存活的对象是应用可以访问的,不会被垃圾回收。死亡的对象是应用不可访问尚且还没有被垃圾收集器回收掉的对象一直到垃圾收集器把这些对象回收掉之前,会一直占据堆内存空间。


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

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

相关文章

用python进行自然语言处理_Python自然语言处理示例:SVM和贝叶斯分类

❝关于自然语言处理(NLP)方面的文章、书籍非常之多,对于自然语言处理的上手,很多人是不知所措的。通过对本文的浏览,您应该能够对自然语言处理会有一个能够完整的有趣的基于Python的对自然语言处理的了解。❞什么是文本分类文本分类是将文本按…

Build 2016,你可能忽视的几个细节

微软公司主办的Build 2016大会尚在进程中,但是两场重量级的主题演讲已经结束。下面列举了我个人非常关注的几个细节,介绍一些背景知识以饲读者。 Bash on Windows背后的历史和未来 微软和IBM二十多年前联合开发NT内核的时候就已经为接驳多种操作系统留下…

JAVA面试常考系列五

转载自 JAVA面试常考系列五 题目一 串行(serial)收集器和吞吐量(throughput)收集器的区别是什么?吞吐量收集器使用并行版本的新生代垃圾收集器,它用于中等规模和大规模数据的应用程序。串行收集器对大多数的小应用(在现代处理器上需要大概100M左右的内存…

kafka消费者开发方式小结

【README】 1, 本文总结了 kafka消费者开发方式;2, 本文使用的是最新的kafka版本 3.0.0;【1】 kafka消费则 【1.1】消费者与消费者组 1)消费者: 应用程序需要创建消费者对象,订阅主题并开始接…

微软发布Azure Functions、Service Fabric和IoT Starter Kits新服务

微软此次 Build 2016 大会的重点主题一直都围绕开发和 Microsoft Azure 云服务,今天更是对外发布了 Azure Functions、Service Fabric 和 IoT Starter Kit 等一系列新服务。就目前与其它友商的竞争而言,微软近期不断的修炼内功,使 Microsoft …

python发送邮件 退回_python 发送邮件(收到的邮件要有发送方才能回复)

Python使用SMTP(简单邮件传输协议)发送邮件普通文本邮件普通文本邮件发送的实现,关键是要将MIMEText中_subtype设置为plain## -*- coding: UTF-8 -*-import smtplibfrom email.mime.text import MIMEText#导入MIMEText类from email import encodersfrom email.heade…

JAVA面试常考系列六

转载自 JAVA面试常考系列六 题目一一个Applet有哪些生命周期? 一个Applet的生命周期分为以下四个阶段: Init 每次加载时都会初始化一个小程序。此方法通知Applet,方法已经被装入系统,在第一次调用start方法之前总是先调用它。Init…

.NET的未来包含一个开源的Mono

在微软Build 2016大会的第二天,微软项目经理Scott Hunter和Scott Hanselman就.NET平台的现状和未来计划做了一场演讲。演讲的题目是“.NET概述”,他们的精彩演讲耗时一个小时,描绘了公司对于.NET的目标以及开发人员可以期待什么。就像开幕式主…

kafka消费者接收分区测试

【README】 本文演示了当有新消费者加入组后,其他消费者接收分区情况;本文还模拟了 broker 宕机的情况;本文使用的是最新的 kafka3.0.0 ;本文测试案例,来源于 消费者接收分区的5种模型,建议先看模型&#…

python数据分析架构_Python数据分析

引言:本文重点是用十分钟的时间帮读者建立Python数据分析的逻辑框架。其次,讲解“如何通过Python 函数或代码和统计学知识来实现数据分析”。本次介绍的建模框架图分为六大版块,依次为导入数据,数据探索,数据处理&…

JAVA面试常考系列七

转载自 JAVA面试常考系列七 题目一 Swing的方法中,有哪些是线程安全的? Swing的规则是:当Swing组件被具现化时,所有可能影响或依赖于组件状态的代码都应该在事件派发线程中执行。 因此有3个线程安全的方法: repaint()…

图片中的Build 2016

微软主办的Build 2016大会刚刚落幕,让我们通过下面的图片集锦来回顾大会的一些容易被人忽视的细节。 Xamarin加入微软大家庭 微软公司于二月底花大价钱买下了Xamarin这家移动开发平台提供商,终于补全了它Mobile First Cloud First战略的短板。 图片一&am…

diy实现spring依赖注入

【README】 本文diy代码实现了 spring 依赖注入,一定程度上揭示了依赖注入原理; 【1】控制反转-Inversion of Control 是一种编码思想,简而言之就是 应用程序A可以使用组件B,但A无法控制B的生命周期(如创建&#xff…

html 中一个格子拆分成两个_一个效果惊人的数字游戏

安爸曾多次讲过数学推理能力对孩子成长的重要性,听到有位家长说自己用扔骰子的方法教孩子数学等式。步骤大致是扔骰子时,如果骰子是3,就在棋盘上从0出发走3步,并且写出033的加法等式。扔到负数就后退,写出减法等式。科…

JAVA面试常考系列八

转载自 JAVA面试常考系列八 题目一 JDBC是什么? JDBC(Java DataBase Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,由一组用Java语言编写的类和接口组成。JDBC提供…

【广州/深圳 活动】 MVP社区巡讲

紧跟当今的技术发展趋势还远远不够,我们要引领变革!加入本地技术专家社区,获取真实案例、实况培训演示以及探讨新一代解决方案。在此活动中,您将: 了解如何运用开源(OSS)技术、Microsoft 技术及…

java socket实现简单即时通讯

【1】socket服务器 /*** Description 即时消息服务器* author xiao tang* version 1.0.0* createTime 2022年01月23日*/ public class IMSocketServer {private static int PORT 13;public static void main(String[] args) {ServerSocket server null;try {// 开启端口serv…

蝌蚪网课助手mac_疫情期间如何录网课?(干货教程)手把手教你录出高质量网课。...

鉴于国外疫情的持续爆发,中小学开学日期进一步延期,我们的网课教学也同样面临持续后延。我们的很多教师朋友,可能此时他们正需要这么一个教程来熟悉网课的录制方法。于是这篇文章就应运而生了,希望它能给各位老师带来些许帮助。​…

JAVA面试常考系列九

转载自 JAVA面试常考系列九 题目一 RMI架构层的结构是如何组成的? RMI体系结构由三层组成,分别是: 存根和骨架层(Stub and Skeleton Layer) 远程引用层(Remote Reference Layer) 传输层&#xf…

WebAPI前置知识:HTTP与RestfulAPI

对HTTP协议的基本了解是能理解并使用RestFul风格API的基础,在了解了这些基础之后,使用各种RestFul的开发框架才能得心应手。我一开始使用WebApi的时候就因为对这些知识缺乏了解,觉得用起来各种不顺手,直到熟悉了这些HTTP的知识后&…