Everything Will Work Out Just Fine

later equals never


  • 首页

  • 关于

  • 标签

  • 分类

  • 归档

  • 搜索

Java面试常见问题汇总

发表于 2020-08-24 | 更新于: 2020-08-24 | 分类于 面试

Java面试常见问题汇总

语言特性 12

Q1:Java 语言的优点?

① 平台无关性,摆脱硬件束缚,”一次编写,到处运行”。

② 相对安全的内存管理和访问机制,避免大部分内存泄漏和指针越界。

③ 热点代码检测和运行时编译及优化,使程序随运行时间增长获得更高性能。

④ 完善的应用程序接口,支持第三方类库。


Q2:Java 如何实现平台无关?

JVM: Java 编译器可生成与计算机体系结构无关的字节码指令,字节码文件不仅可以轻易地在任何机器上解释执行,还可以动态地转换成本地机器代码,转换是由 JVM 实现的,JVM 是平台相关的,屏蔽了不同操作系统的差异。

语言规范: 基本数据类型大小有明确规定,例如 int 永远为 32 位,而 C/C++ 中可能是 16 位、32 位,也可能是编译器开发商指定的其他大小。Java 中数值类型有固定字节数,二进制数据以固定格式存储和传输,字符串采用标准的 Unicode 格式存储。


阅读全文 »

http相关内容

发表于 2020-08-23 | 更新于: 2020-08-23 | 分类于 计算机网络

HTTP相关内容

HTTP 和 HTTPS 的区别

HTTP 是一种 超文本传输协议(Hypertext Transfer Protocol),HTTP 是一个在计算机世界里专门在两点之间传输文字、图片、音频、视频等超文本数据的约定和规范

img

HTTP 主要内容分为三部分,超文本(Hypertext)、传输(Transfer)、协议(Protocol)。

  • 超文本就是不单单只是本文,它还可以传输图片、音频、视频,甚至点击文字或图片能够进行超链接的跳转。
  • 上面这些概念可以统称为数据,传输就是数据需要经过一系列的物理介质从一个端系统传送到另外一个端系统的过程。通常我们把传输数据包的一方称为请求方,把接到二进制数据包的一方称为应答方。
  • 而协议指的就是是网络中(包括互联网)传递、管理信息的一些规范。如同人与人之间相互交流是需要遵循一定的规矩一样,计算机之间的相互通信需要共同遵守一定的规则,这些规则就称为协议,只不过是网络协议。
阅读全文 »

排序算法总结

发表于 2020-08-21 | 更新于: 2020-09-17 | 分类于 算法

排序算法总结

总览

  • 稳定:排序前后相等元素之间的相对位置不变
  • 不稳定:排序前后相等元素的相对位置发生变化
  • 内排序:所有排序操作在内存中完成
  • 外排序:排序方法通过磁盘和内存的数据传输对大数据进行排序

排序算法总结

  • 比较排序:在排序的最终结果里,元素之间的次序依赖于它们之间的比较,每个数必须与其他数进行比较,才能确定自己的位置,其优势在于,适用于各种规模的数据,不在乎数据的分布。比较排序适用于一切需要排序的情况。

常见的快速排序、归并排序、堆排序、冒泡排序等属于比较排序。

  • 非比较排序:只确定每个元素之前的已有元素个数即可进行排序,一次遍历即可解决,非比较排序时间复杂度低,但由于非比较排序需要占用空间来确定唯一位置,所以对数据规模和数据分布有一定的要求。

基数排序、计数排序、桶排序属于非比较排序。

阅读全文 »

Java-面向对象

发表于 2020-05-11 | 更新于: 2020-07-21 | 分类于 语言基础

面向对象

基本数据类型和引用数据类型传参的区别

Java内存空间
栈区:

  • 每个线程包含一个栈区,栈中只保存基础数据类型的值和对象的引用,当一段代码或一个方法调用完毕后,栈中为这段代码提供的基本数据类型或对象的引用被立即释放。
  • 每个栈中的数据(原始类型和对象引用)私有,其他栈不能访问。
  • 栈分为3个部分:基本类型变量区、执行环境上下文、操作指令去(存放操作指令)。

堆区:

  • 存储的都是对象,每个对象都包含一个与之对应的class信息。(class用来得到操作指令)
  • Jvm只有一个堆区(heap)被所有线程共享,堆中不存放基本类型和对象引用,只存放对象本身。

方法区

  • 也叫静态区,和堆一样,被所有线程共享,方法区包含所有的class和static变量。
  • 方法区中包含的都是在整个程序中永远唯一的元素,如class,static变量。

内存空间
1.整数、浮点数、字符为基本数据类型。
2.字符串、数组为引用类型(内存数据的索引)。

  • 基本数据类型参数的传递,是调用方值的复制,其各自的后续修改,互不影响。
  • 引用数据类型参数的传递,若在方法体中修改形参指向的数据内容,则会对实参变量的数值产生影响,因为形参和实参变量共享同一块堆区。
  • 当使用引用数据类型作为方法的形参时,若在方法体中修改形参变量的指向,此时不会对实参变量的数值产生影响,因为此时形参变量和实参变量分别指向不同的堆区。
阅读全文 »

红黑树算法、原理分析

发表于 2019-12-24 | 更新于: 2020-07-08 | 分类于 数据结构

红黑树

Red-Black Tree,自平衡(整体较平衡)的二叉查找树,查找性能较高。

五个重要特性:

  • 节点为红色或黑色
  • 根为黑色
  • 叶子(NIL节点)节点为黑色
  • 每个红色节点必须有两个黑色子节点(从每个叶子到根的所有路径上不能有连续的两个红色节点)
  • 从任一节点到其每个叶子(NIL节点)的所有简单路径都包含相同数目的黑色节点

以上性质保证了红黑树具有:
从根到叶子的最长可能路径不多于最短可能路径的两倍(因为红黑树中最短可能路径都是黑色节点,最长可能路径为红黑节点交替,而两者由于性质4具有相同数量的黑色节点)
这一特征。从而使其在大致上是平衡的,插入、删除、查找操作的最坏情况与树的高度成比例,不会出现左右子树极其失衡的情况

下图为一红黑树:
红黑树示例

阅读全文 »

HashMap 源码分析

发表于 2019-12-23 | 更新于: 2019-12-24 | 分类于 数据结构

HashMap概述

HashMap时常用的Java集合之一,是基于哈希表的Map接口的实现。HashMap的底层是哈希数组,数组元素为Entry,HashMap通过key的hashCode来计算hash值,当hashCode相同时,通过“拉链法”解决冲突。

HashMap数据结构

在jdk1.8之后,解决哈希冲突的方式有了较大变化,当链表长度大于阈值(默认为8)时,将链表转化为红黑树,以减少搜索时间,原本Map.Entry接口的实现类Entry改名为Node,转化为红黑树时改用另一种实现TreeNode。

阅读全文 »

leetcode 739 Daily Temperatures

发表于 2019-12-20 | 更新于: 2019-12-24 | 分类于 leetcode

leetcode 739 :Daily Temperatures

Given a list of daily temperatures T, return a list such that, for each day in the input, tells you how many days you would have to wait until a warmer temperature. If there is no future day for which this is possible, put 0 instead.

For example, given the list of temperatures T = [73, 74, 75, 71, 69, 72, 76, 73], your output should be [1, 1, 4, 2, 1, 1, 0, 0].

阅读全文 »

leetcode 647 palindromic substrings

发表于 2019-12-20 | 更新于: 2019-12-24 | 分类于 leetcode

leetcode 647 palindromic substrings

Given a string, your task is to count how many palindromic substrings in this string.

The substrings with different start indexes or end indexes are counted as different substrings even they consist of same characters.

Example 1:

1
2
3
Input: "abc"
Output: 3
Explanation: Three palindromic strings: "a", "b", "c".

Example 2:

1
2
3
Input: "aaa"
Output: 6
Explanation: Six palindromic strings: "a", "a", "a", "aa", "aa", "aaa".

阅读全文 »

leetcode 503 next greater element II

发表于 2019-12-20 | 更新于: 2019-12-24 | 分类于 leetcode

leetcode 503 next greater element II

Given a circular array (the next element of the last element is the first element of the array), print the Next Greater Number for every element. The Next Greater Number of a number x is the first greater number to its traversing-order next in the array, which means you could search circularly to find its next greater number. If it doesn’t exist, output -1 for this number.

for example:

1
2
3
Input: [1,2,1]
Output: [2,-1,2]
Explanation: The first 1's next greater number is 2; The number 2 can't find next greater number; The second 1's next greater number needs to search circularly, which is also 2.

阅读全文 »

leetcode 338 counting bits

发表于 2019-12-20 | 更新于: 2019-12-24 | 分类于 leetcode

leetcode 338 counting bits

Given a non negative integer number num. For every numbers i in the range 0 ≤ i ≤ num calculate the number of 1’s in their binary representation and return them as an array.

Example 1:

1
2
Input: 2
Output: [0,1,1]

Example 2:

1
2
Input: 5
Output: [0,1,1,2,1,2]

阅读全文 »
123
ZrBac

ZrBac

postgraduate sutdent

30 日志
8 分类
9 标签
RSS
GitHub
0%
© 2020 ZrBac