Java 面试复习_5

2024Java面试复习指南Redis+Mybatis+MySQL+并发编程(1到5年必看) 为什么线程通信的方法wait0, notify0和notifyAll0被定义在Object类里?为什么wait0, notify0和ntfifAll必须在同步方法或者同步块中被调用?简述Mybatis的Xml映射文件和Mybatis内部数据结构之间的映射关系?我们知道通过expire来设置key的过期时间,那么对过期的数据怎么处理呢?Mybatis的Xml映射文件中,不同的Xml映射文件, id是否可以重复?JDBC编程有哪些不足之处,MyBatis是如何解决这些问题的?你是如何调用wait0 方法的? 阅读详情

2019-5-28
作者:水不要鱼

(注:能力有限,如有说错,请指正!)

  • JVM 内存区域划分

Java 规范中将内存大致分为了以下几个区:

  1. 程序计数器
  2. Java 虚拟机栈
  3. 本地方法栈
  4. 堆
  5. 方法区

其中,程序计数器,Java 虚拟机栈,本地方法栈是属于线程私有的,也就是每个线程会有自己的一份,而
方法区和堆是线程共享的,也就是只会有一份,所有线程都访问这一份。

扩展:JVM 内存每一个区域的作用

  1. 程序计数器:线程私有,也就是每个线程内部都会有一份,原因就在于,它记录的是当前字节码执行的指令的地址。
    举个例子,A 线程和 B 线程,当 A 线程在执行字节码第 35 行的时候,时间片用完了,于是系统将运行 B 线程,
    而 A 线程就需要将这个 35 记录下来,只有这样,当系统将时间片分配到 A 线程上,也就是 A 线程又继续恢复
    运行的时候,才知道要从哪一行字节码开始运行。如果线程执行的是 Java 方法,这个计数器记录的就是字节码指令的地址;
    如果线程执行的是本地方法(使用 native 关键字修饰的方法),那这个计数器就是空。

  2. Java 虚拟机栈:线程私有,而且生命周期和线程一样,也就是线程存活的时候存活,线程销毁的时候销毁。
    我们可以注意到这是个栈,也就是先进后出的模型,具体入栈的是每一个方法调用的内存模型,说白了就是,每一个
    Java 方法在调用的时候会有属于这个方法的数据,比如局部变量表,操作数栈,方法的出口等,而这些数据就会存在
    这个 Java 虚拟机栈中。举个例子,一个线程调用了 A 方法,这时候会将 A 方法的数据包装成一个栈帧,这个
    栈帧包含了局部变量表(比如方法里面写了 int a = 0;,这个 a 就是局部变量,就会保存在局部变量表中),
    操作数栈还有方法出口等,包装成一个栈帧之后就会将它 push 进 Java 虚拟机栈,如果 A 方法内部调用了 B 方法,也会有同样的
    过程,也就是将 B 方法的数据包装成栈帧,然后 push 进 Java 虚拟机栈,这时候栈顶就是 B 方法的栈帧了。
    当 B 方法执行完了,就会将 B 方法的栈帧从 Java 虚拟机栈中 pop 出来,这时候栈顶又变回 A 方法的栈帧了。
    所以,很明显这个栈帧必须是线程私有的,也就是每一个线程都独占一份的才能正常工作。另外,从上面可以看出,局部变量表中的数据在编译期
    就会确定好,也就是说,调用一个方法的时候要分配多大的局部变量空间是完全确定的。如果这个方法要求的栈空间太大,
    比如超过了虚拟机允许的线程栈大小,就会提示 StackOverflowError 异常,这在递归深度很大的时候就会看见。
    部分虚拟机是允许这个虚拟机栈动态扩展的,如果扩展时内存空间不足,就会提示 OutOfMemoryError 异常。

  3. 本地方法栈:线程私有,与 Java 虚拟机栈类似,只不过 Java 虚拟机栈针对的是 Java 方法,而本地方法栈针对的是本地方法,
    也就是使用 native 关键字修饰的方法。除此之外,一些虚拟机上直接把本地方法栈和 Java 虚拟机栈合为一个,比如 HotSpot。。。

  4. Java 堆:线程共享,这是 JVM 管理的内存中最大的一块,也是我们使用最多的一块。几乎所有的对象都在这个区域中分配内存,
    为什么说是“几乎”呢?因为随着 JIT 编译器的优化和升级,栈上分配之类的变量逃逸优化会导致这个对象不一定分配在堆上,这些优化手段
    在 Golang 中体现的很明显。另外,由于这个区域比较大,所以也是垃圾收集器管理的最主要区域,而很多垃圾收集器都是使用分代收集算法,
    这就使得 Java 堆被进一步分成了多个区域,比如分为新生代和老年代,再细致的分还可以分成 Eden 区、From Survivor 区和 To Survivor 区。
    当然,如果堆空间不足,就会抛出 OutOfMemoryError 异常。

  5. 方法区:线程共享,用于存放虚拟机加载的类信息、常量、静态变量以及编译之后的代码等。但是从 JDK7 之后,字符串常量池已经从这里面移出来了。
    我们应该注意的是,方法区中有一个运行时常量池,专门用于存放类信息中的常量池,具体就是编译期生成的字面量和符号引用。这个区域和堆一样,
    也被列入了垃圾收集的范围,所以,如果内存不足了,就会抛出 OutOfMemoryError 异常。

下面我们来看一个总结的例子:

class Test {
    
    private int a = 0; // 几乎可以说保存在 堆 中,为啥是几乎,上面已经说过了
    private static int b = 0; // 保存在 方法区 中
    private final int c = 0; // 几乎可以说保存在 堆 中,为啥是几乎,上面已经说过了
    private static final int d = 0; // 保存在 方法区 中
    
    // 我们要知道的是,static 会影响变量的存储位置,静态变量就是保存在方法区中,
    // 而 final 不会影响变量的存储位置,上面提到的方法区存放的常量并不是指这个 final 常量
    
    private void test() {
        int e = 0; // 存放在 Java 虚拟机栈 中
    }
}
  • JVM 之外的内存 - 直接内存

除了上面所提到的 JVM 管理的内存,在 JDK1.4 之后新加入的 NIO 使用到了堆外的内存。这块内存是使用本地方法分配的,
它避免了数据在本地内存和 JVM 内存之间来回复制,所以性能会更好。但是也会有一个坑,因为这块内存是直接分配的,
而不像 JVM 堆可以使用 -Xmx 设置大小,这就会导致如果你的 -Xmx 设置的太大,也就是堆内存分配的太大,而
你的程序又使用了大量的直接内存,就会导致内存不足。举个例子,一台服务器的内存是 32 GB,你的 JVM 堆使用了
16 GB 内存,而系统和其他应用占了 8 GB 内存,这时候的内存已经被分配走了 24 GB 内存,可用内存就只剩下 8 GB 了。
如果你的程序中还使用到了大量的直接内存,比如做 NIO 的时候,你使用到了 12 GB 内存,很明显,系统内存已经不足,
要么就会开始使用交换空间,要么就会内存不足导致程序崩溃甚至系统崩溃。

今晚就到这里,晚安!

MATLAB 论文复现——面向紧急需求响应的规模化灵活资源负荷管理快速决策方法 其次,对灵活资源参与EDR的功率分配模型进行了建模,并提出了基于分层分布式共识算法的快速决策方法,对功率分配模型进行快速求解,以满足EDR实时性的需求,在保证较高精度的前提下提高了决策速度。[1]孔祥玉,杨至端,孙裕策,等.面向紧急需求响应的规模化灵活资源负荷管理快速决策方法[J/OL].电力系统自动化,1-13[2024-07-29].http://kns.cnki.net/kcms/detail/32.1180.TP.20240709.1843.002.html.关键词: 规模化灵活资源; 阅读详情

相关推荐

语义通信高斯信道仿真代码

【代码】语义通信高斯信道仿真代码。

一去不复返的通信er 427

Java开发5年,复习1个月成功上岸京东商城,面试和复习思路分享

​​最近有很多小伙伴在后台私信我说,马上金九银十了,现在准备跳槽涨薪的同学越来越多了,想要一些速成的面试题和面试技巧,特地今天马老师为大家整理了这三套阿里巴巴2022年全年Java岗面试题总结+一线互联网大厂Java岗面经+一线互联网大厂Java岗面试题总结!

小梦爱Java的博客 443

uniapp+ucharts折线图toolTip不显示?别慌,手把手教你用showToolTip方法精准修复

本文详细解析了uniapp+ucharts折线图中toolTip不显示的常见问题,提供了showToolTip方法的精准修复方案。从底层原理到实战代码,帮助开发者解决触摸事件冲突、坐标计算偏差等问题,确保折线图交互提示功能稳定运行。

weixin_30316097的博客 402

Java面试复习5 IO和流

Java面试复习5 IO和流 声明:本面试复习都基于一本未署名的Java面试宝典所述,根据自己的理解写出了这一专栏的复习博客 介绍一下Java中都有哪几种流? 流的分类 按照流向: inputStream 输入流:读取外部数据 , outputStream 输出流:写出内部数据 按照实现功能:节点流和处理流。 节点流(文件流)(:可以直接从或者向某一个节点(或者说数据源,目的地)读写数据...

yikuki的博客 206

LSCM最小二乘保角参数化

LSCM最小二乘保角参数化 最小二乘思想 已知一组点的数据(x,y) x x1x_1x1​ x2x_2x2​ x3x_3x3​ … xnx_nxn​ y y1y_1y1​ y2y_2y2​ y3y_3y3​ … yny_nyn​ 可以近似为线性关系 y=ax+by=ax+by=ax+b ,目标为确定常数 aaa , bbb ; 解法:找到 aaa , bbb ,使得所有 yiy_iyi​ 与 axi+bax_i+baxi​+b 偏差的平方和 Q=∑i=1n(yi−axi−b)2 Q=\s

weixin_49732532的博客 4252

时频分析之STFT:短时傅里叶变换的原理与代码实现(非调用Matlab API)

STFT function [STFT, f, t] = mystft(x, win, hop, nfft, fs) % function: [STFT, f, t] = stft(x, win, hop, nfft, fs) % % Input: % x - signal in the time domain % win - analysis window function % hop - hop size % nfft - numb

frostime的博客 13万+

Java后端面试复习规划表,5万字

你好,我是田哥。年底将至,是否想明年年初换工作呢?如果有,并且对于如何复习还是很迷茫的,那我建议你看完这篇文章。从现在开始,按照文章内容进行复习,年后找工作轻松拿捏。还有部分人可能会说 面试机会都没有,找个mao线。所以也可以安排了简历优化技巧,按照我的方式面试机会绝对上升一个维度。很多人最怕项目问题,也给安排了。本文近5万字,阅读完成大概要花2个小时,所以建议先收藏。本文的整体目录:java基础...

田维常 433

海量数据 / Vastbase 深度研究笔记 v3.1

v3.1 重点修订:在 v3.0 审慎版基础上,新增“2026 新变量”章节,纳入 7 亿级定增、HTAP / 多模态时序数据库、G100 V3.0 Build 8 的 3CM+2DN 高可用补强、pgvector / V100 / AI 多模叙事,以及集成服务基因与标准软件 ARR 的拉扯。核心关注点是:Vastbase 能否把 openGauss 生态红利、数据库产品矩阵和行业交付能力,转化为可持续、可复购、低边际成本的标准软件收入。海量不是没有业务基本盘,也不是马上失血致死;客户越多,服务债越大。

喝醉酒的小白 549

Java面试复习总结5——Java类和包

目录 Java中的包概念 包的作用 package 的目录结构 设置 CLASSPATH 系统变量 常用jar包 java软件包的类型 dt.jar rt.jar *.java文件的奥秘 *.Java文件简介 为什么一个java源文件中只能有一个public类? Main方法 外部类的访问权限 Java包的命名规则 参考文章 Java中的包概念 Java中的包是封...

Slayer_Zhao的博客 1642

【MODBUS】Java实现的Modbus协议类库——推荐j2mod库

Jamod是另一个开源的Modbus Java库。这个库的设计是完全面向对象的,基于抽象,应该支持易于理解、可重用性和可扩展性。它支持Modbus RTU和Modbus TCP,并且提供了主站和从站的功能。这是jamod Modbus库的一个分支,取自1.2.1版本,根据Apache 2许可证发布,包含在该项目的SVN存储库中。j2mod项目的目标是基于Java编程语言生成一个功能更全面的Modbus(tm)通信库。这是一个积极开发的项目,接受具有Modbus主站和从站开发经验的专业软件工程师提交的文件。

开源物联网项目商业化作者 5639

指纹浏览器 WebGPU:新一代图形指纹的检测趋势与提前防御

指纹浏览器与风控系统对抗已升级至硬件层面。传统基于WebGL的API拦截和像素噪声技术,在WebGPU时代因架构变革而失效。WebGPU通过Compute Shader直接测量GPU物理算力,暴露了软件模拟的致命缺陷。防御需转向真实GPU硬件直通和虚拟化技术,如vGPU分割算力并伪装特征,以应对风控系统对硬件拓扑和浮点精度的检测。唯有基于物理算力的拟态,才能抵御新一代图形指纹的降维打击。

数据知道的博客 216

Java开发5年,复习1个月成功上岸京东物流,面试和复习思路分享

Java多线程部分JVM部分Dubbo部分的面试题题目ZooKeeper面试题题目MYSQL面试题题目目录ElasticSearch篇面试题数据结构与算法面试题。

stone_tmp的博客 340

JavaScript教程-字符集,Unicode转义序列,标识符,数据类型,数字,未定义值,浮点数,字符串,引用数据类型,类型检测,类型转换,运算符,关系运算符,

前端学习

VAN 212

Java面试复习 Day 5

策略名称是否丢任务是否抛异常谁执行任务核心作用典型场景是是无快速失败,强制感知支付、核心交易(需配合重试)否‌否‌提交线程‌降级限流,自我保护日志、非实时重要任务是否无静默丢弃,保系统监控采样、非关键日志是(旧任务)否线程池(新任务)优先处理最新数据实时行情、状态上报生产环境最佳实践建议在实际生产中,默认的 AbortPolicy 往往不够用,因为单纯的异常抛出可能导致业务中断。

lotus_csdn888的博客 372

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

面试直击之JavaSE复习day5——Java异常处理

1.java中异常分为哪些种类 1)按照异常需要处理的时机分为编译时异常(CheckedException)和运行时异常(RuntimeException)。 只有Java语言提供了Checked异常,Java认为Checked异常都是可以被处理的异常,所以Java程序必须显示的处理Checked异常。如果程序员没有处理Checked异常,该程序在编译时就会发生错误无法编译。这体现了java的设计哲学:没有完善错误处理的代码根本没有机会被执行。对Checked异常处理方法有两种:①当前方法知道如何让处理

Amanda_wr的博客 364

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

最新5分钟了解CDN 加速原理,Java开发者面试如何系统复习

引领完成Docker的安装、部署、管理和扩展,让其经历从测试到生产的整个开发生命周期,深入了解Docker适用于什么场景。并且这本Docker的学习权威指南介绍了其组件的基础知识,然后用Docker构建容器和服务来完成各种任务:利用Docker为新项目建立测试环境,演示如何使用持续集成的工作流集成Docker,如何构建应用程序服务和平台,如何使用Docker的API,如何扩展Docker。

2401_84688317的博客 757

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

Java春招面试复习:JDK 5-15都有哪些经典新特性

前言 JDK 15发布啦~ 我们一起回顾JDK 5-15 的新特性吧,大家一起学习哈~ 本文已经收录到github https://github.com/whx123/JavaHome 公众号:捡田螺的小男孩 Java 5 新特性 1. 泛型 泛型本质是参数化类型,解决不确定具体对象类型的问题。 List<String> strList=new ArrayList<String>(); 2. 增强循环(for-each) for-each循环简化了集合的遍历。 String

Viper的程序员修炼手册 793

银四突击字节?复习之路:283页Java面试宝典pdf(5大专题)

写在开篇 个人情况介绍: 出生江南小镇,在北京读书,毕业之后就留了下来,学历是211本科,资历各方面都不错,因此在简历上也能够充分体现我自己的优势,年前海投简历之后,现在已经接到不少公司抛来的橄榄枝了,只要面试顺利,基本上是公司任你挑的状态了。 以下主要分享面经和个人学习方法,会包括很多PDF文档,如面试题库(含答案+解析)、学习笔记、实战文档和脑图等等,均可以分享,点击传送门即可!! 字节跳动4面核心面试题 01 Zookeeper 部分 CAP定理 ZAB协议 leader.

weixin_56712358的博客 225

挑战Java面试题复习第5天,无人扶我青云志

无人扶我青云志,勇闯大厂面试现场

专注编程和人工智能! 810

程序员面试必备:2024最新最全面Java复习路线(含P5-P8)

小编整理出一篇 Java 进阶架构师之路的核心知识,同时也是面试时面试官必问的知识点,篇章也是包括了很多知识点,其中包括了有基础知识、Java 集合、JVM、多线程并发、spring 原理、微服务、Netty 与 RPC 、Kafka、日记、设计模式、Java 算法、数据库、Zookeeper、分布式缓存、数据结构等等

m0_50180963的博客 1133

程序员面试必备:2025最新最全面Java复习路线(含P5-P8)!已收录 GitHub

小编整理出一篇 Java 进阶架构师之路的核心知识,同时也是面试时面试官必问的知识点,篇章也是包括了很多知识点,其中包括了有基础知识、Java 集合、JVM、多线程并发、spring 原理、微服务、Netty 与 RPC 、Kafka、日记、设计模式、Java 算法、数据库、Zookeeper、分布式缓存、数据结构等等

m0_50180963的博客 704
上一篇: Java 面试复习_4
下一篇: Java 面试复习_6
水不要鱼
博客等级 码龄7年 7粉丝 15原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值