运行时数据区 2.1 内存划分 2.2 各内存区域功能 2.3 Java 7 和 Java 8 在内存模型上的区别 2.4 什么情况下会出现堆内存溢出? 3. GC 机制 3.1 什么是 GC? GC 机制 推荐阅读: 深入理解 JVM 的内存结构及 GC 机制[1] JVM 垃圾回收[2] 浅析 JAVA 的垃圾回收机制(GC)[3] 3.1 什么是 GC? 若一个对象具有强引用,就 相当于生活中必备的物品,垃圾回收器绝对不会回收它,当内存空间不足时,JVM 宁愿抛出 OOM 错误,也不会随意回收具有强引用的对象来解决内存不足问题,因此强引用是造成 Java 由于使用的是 标记 - 清除算法,所以会 导致收集结束后产生大量空间碎片; G1 收集器 G1(Garbage-First)收集器是 面向服务器的垃圾回收器,主要针对配备多个处理器和大内存的机器,以极高频率满足 id=_3-%e5%9e%83%e5%9c%be%e6%94%b6%e9%9b%86%e7%ae%97%e6%b3%95 [3] 浅析 JAVA 的垃圾回收机制(GC): https://www.jianshu.com
Runnable接口和Callable接口的区别 Runnable自Java 1.0以来一直存在,但Callable仅在Java 1.5中引入,目的就是为了来处理Runnable不支持的用例。 线程池如何创建 《阿里巴巴Java开发手册》中强制线程池不允许使用Executors去创建,而是通过ThreadPoolExecutor的方式,这中强制要求的目的在于让写的同学更加明确线程池的运行规则, Runnable> workQueue, ThreadFctory threadFactory, RejectedExecutionHandler handler) ThreadPoolExecutor3个最重要的参数
星球帖子,见 https://t.zsxq.com/Fyvn2Z3 https://t.zsxq.com/vVjeM37 https://t.zsxq.com/qnu3FiE 3、对Linux命令不熟悉
建议使用 Lambda 表达式最好不要超过 3 行。 this 的用法在 java 中大体可以分为 3 种: 普通的直接引用,this 相当于是指向当前对象本身。 public static void main(String[] args) { Integer a = new Integer(3); Integer b = 3; // 将3自动装箱成 这是面向对象编程的一种设计原则,对于每一种设计原则,我们需要掌握它的设计初衷,能解决哪些编程问题,有哪些应用场景。 Error 此类错误一般表示代码运行时 JVM 出现问题。通常有 Virtual MachineError(虚拟机运行错误)、NoClassDefFoundError(类定义错误)等。
functools.wraps可以解决函数被装饰后__name__变量变成用于装饰的函数的问题。 5 def inner(): return a + c + 10 return inner fun1 = outer(10) fun2 = outer(20) fun3 程序的运行速度可能加快 在一些等待的任务上实现如用户输入、文件读写和网络收发数据等,线程就比较有用了 Thread方法 Python3中支持线程的两个模块: _thread (从Python2中兼容过来 Thread-3 processing One Thread-1 processing Two Thread-2 processing Three Thread-3 processing Four Thread -1 processing Five 退出线程:Thread-3 退出线程:Thread-2 退出线程:Thread-1 退出主线程 ''' 参考资料 装饰器 Python闭包思想与用法浅析 Python3
在整理过程中,我选取了Java基础中极为高频且关键的问题,涵盖数据类型、关键字、核心类等关键领域。不仅给出精准答案,还搭配简洁示例助你理解。希望这份总结能助力你从容应对面试。 应届生面试最爱问的几道Java基础问题(含答案) 一、Java有哪些数据类型? Java数据类型分为基本数据类型和引用数据类型。 若你还想补充更多Java基础问题,或者对答案的详细程度有新要求,都能随时告诉我 。 应届生,Java 面试,Java 基础,面试问题,面试答案,Java 集合,Java 多线程,JVM,Java 并发,Java 异常,Java IO,Java 反射,Java 注解,Java 常用类,Java 基础高频问题
超时时间的设置** 通过timeout属性配置超时时间, 服务的提供者和消费者都可以配置, 尽量在服务提供者中配置,因为服务的提供者会对自己提供的服务情况更清楚超时时间不要设置太大(1~5S),会影响并发性能问题 存在慢的提供者累积请求问题,比如:第二台机器很慢,但没挂,当请求调到第二台时就卡在那,久而久之,所有请求都卡在调到第二台上。 最少活跃调用数 相同活跃数的随机,活跃数指调用前后计数差。 ** dubbo序列化:阿里尚未开发成熟的高效java序列化实现,阿里不建议在生产环境使用它 hessian2序列化(默认推荐):hessian是一种跨语言的高效二进制序列化方式。 java序列化:主要是采用JDK自带的Java序列化实现,性能很不理想。 【面试题】- Zookeeper分布式锁(文件系统、通知机制)** 有了zookeeper的一致性文件系统,锁的问题变得容易。锁服务可以分为两类,一个是保持独占 ,另一个是控制时序 。
前言 当你准备面试技术岗位时,经常会遇到一类问题,被称为Top-K问题。这些问题要求你找到数据集中的前K个最大或最小元素。这些问题出现在各种面试中,包括软件工程、数据科学和机器学习等领域。 这篇博客将为你提供有关Top-K问题的全面指南,包括常见的问题类型、解决方法以及一些面试技巧。 ️什么是Top-k问题? 在面试中,你可能会遇到多种Top-K问题的变体,这些问题要求你设计一个高效的算法来解决它们。 ️常见的Top-K问题类型 ☁️寻找Top-K最大元素 这是最常见的Top-K问题之一。 你可以使用哈希表或优先队列等数据结构来解决这个问题。 ️解决Top-K问题的方法 解决Top-K问题的方法主要是取决于问题类型和数据集的大小。 { int arr[] = {1, 23, 12, 9, 30, 2, 50}; int n = sizeof(arr) / sizeof(arr[0]); int k = 3;
单词拆分 I 首先看下力扣第 139 题「单词拆分」: 函数签名如下: boolean wordBreak(String s, List<String> wordDict); 这是一道非常高频的面试题 进入下一层回溯树 backtrack(nums); // 取消选择 track.removeLast(); } } 给这个函数输入nums = [1,2,3] ,输出是 3^3 = 27 种可能的组合: [ [,,],[,,],[,,],[,,],[,,],[,,],[,,],[,,],[,,], [,,],[,,],[,,],[,,],[,,],[, 找到一个单词匹配 s[i..i+len) // ... } } 设wordDict的长度为M,字符串s的长度为N,那么这段代码的最坏时间复杂度是O(MN)(for 循环O(M),Java 再加上 Java 中用+拼接字符串的效率并不高,且还要消耗备忘录去存储所有子问题的结果,所以这个算法的时间复杂度并不比回溯算法低,依然是指数级别。
公众号:尤而小屋 作者:Peter 编辑:Peter 大家好,我是Peter~ 本文主要是给大家介绍3个Pandas日常高频使用函数:apply + agg + transform。 Out[2]: name sex chinese math 0 xiaoming male 100 90 1 sunjun female 80 100 2 jimmy female 90 88 3 使用1:自带函数 改变字段类型:从int64变成float64 In [3]: df.dtypes # 改变前 Out[3]: name object sex object return 0 if x == "male" else 1 In [7]: df["sex"] = df["sex"].apply(change_sex) df # 改变后 使用3: chinese":["sum"], "math":["mean"]}) Out[12]: chinese math sum 362.0 NaN mean NaN 92.0 In [13]: # 3
3个Pandas高频使用函数 本文主要是介绍3个Pandas中很实用的函数:apply + agg + transform 模拟数据 In [1]: import pandas as pd import df Out[2]: name sex chinese math 0 xiaoming male 100 90 1 sunjun female 80 100 2 jimmy female 90 88 3 函数可以是自定义的,也可以是python或者pandas内置的函数 使用1:自带函数 改变字段类型:从int64变成float64 In [3]: df.dtypes # 改变前 Out[3]: name female-1 return 0 if x == "male" else 1 In [7]: df["sex"] = df["sex"].apply(change_sex) df # 改变后 使用3: "chinese":["sum"], "math":["mean"]}) Out[12]: chinese math sum 362.0 NaN mean NaN 92.0 In [13]: # 3
Java校招面试问题通常涵盖Java基础、并发编程、JVM、框架等方面,以下是一些常见问题及答案:Java基础Java语言有哪些特点?简单性:语法简洁,去除了C++中指针、多重继承等复杂易错特性。 ThreadLocal的原理和内存泄漏问题如何避免?原理:每个线程持有独立的ThreadLocalMap,Key为弱引用的ThreadLocal对象。 示例:筛选和转换数据import java.util.Arrays;import java.util.List;import java.util.Map;import java.util.stream.Collectors "John Doe"), new Book("2", "Spring Boot in Action", "Jane Smith"), new Book("3" { private static final ExecutorService executor = Executors.newFixedThreadPool(3); public static
class StaticImportExample { public static void main(String[] args) { double result = sqrt(pow(3, 实操示例:使用Java 8的Consumer接口演示引用传递虽然Java只有值传递,但可以通过Consumer接口实现类似引用传递的效果:import java.util.function.Consumer 实操示例:使用Java NIO.2 API进行文件操作Java 7引入了NIO.2 API,提供了更简洁、更高效的文件操作方式:import java.io.IOException;import java.nio.file.Files ;import java.nio.file.Path;import java.nio.file.Paths;import java.util.List;public class NIO2Example 应届生,Java 面试,Java 基础,面试高频问题,Java 集合,Java 多线程,Java 异常处理,Java 并发编程,JVM,Java IO,NIO,Spring 基础,MySQL, 数据结构
并发解决了程序排队等待的问题,如果一个程序发生阻塞,其他程序仍然可以正常执行。 不过线程和线程之间由于某些资源是独占的,会导致锁的问题。例如Python的GIL多线程锁。 协程的好处: 无需线程上下文切换的开销 无需原子操作锁定及同步的开销 方便切换控制流,简化编程模型 高并发+高扩展性+低成本:一个CPU支持上万的协程都不是问题。所以很适合用于高并发处理。
有点措手不及,很多知识点都没有来得及准备,而在面试中经常被问到TCP和UDP的一些细节问题。于是就有了本篇文章的总结。是参考和复制了很多前辈的总结。希望准备跳到互联网公司的程序员都能顺利通过面试。 3. TCP服务器收到请求报文后,如果同意连接,则发出确认报文。 扩散问题: 既然 IP 层会分片,为什么 TCP 层还需要 MSS 呢? 3. 客户端收到服务器的确认请求后,此时,客户端就进入FIN-WAIT-2(终止等待2)状态,等待服务器发送连接释放报文(在这之前还需要接受服务器发送的最后的数据)。 4. 当 TCP 内存小于第 1 个值时,不需要进行自动调节;在第 1 和第 2 个值之间时,内核开始调节接收缓冲区的大小;大于第 3 个值时,内核不再为 TCP 分配新内存,此时新连接是无法建立的。
现在可以使用[html5](http://www.w3.org/TR/html5/single-page.html)推荐的写法:`<doctype html>` * 上下margin重合问题 ie和ff 解决方法: 使用CSS中的clear:both;属性来清除元素的浮动可解决2、3问题,对于问题1,添加如下样式,给父元素添加clearfix样式: .clearfix:after{content: YUI Compressor 是一个用来压缩 JS 和 CSS 文件的工具,采用Java开发。 使用方法: //压缩JS java -jar yuicompressor-2.4.2.jar --type js --charset utf-8 -v src.js > packed.js //压缩CSS 2、安全问题 AJAX暴露了与服务器交互的细节。 3、对搜索引擎的支持比较弱。 4、破坏了程序的异常机制。 5、不容易调试。
本科/研究生期间在实验室/实习单位参与了XX项目,是否上线,担任什么角色,解决什么问题,遇到过什么问题。另外,在本科期间/研究所期间参与校内XX活动(技术之外有点爱好,点到为止)。 2 请问你有什么优点缺点 这个问题还是比较坑的,别上来就是优点能干大事儿,缺点太热爱打游戏。。。 当领导一个社团或者一个小组的时候,又是会因为太过和善显得魄力不足;有时候不怎么会拒绝别人,以后得多多改善 3 你还有什么问题要问? 是了解你对工作的期许。 其实是了解大家对这份工作的认知和所想达成的成就 1-3年:开始工作的前两三年是提升技术最重要的成长期,这段时间里,尽量多做事多锻炼,不要怕苦怕累。 3-5年:掌握软件开发各个阶段的基本技能,如市场分析,可行性分析,需求分析,结构设计,软件测试等。争取做一名出色的工程师。
Java 中常用的容器有哪些? ArrayList 和 LinkedList 的区别? ArrayList 是基于数组实现的,LinkedList 是基于链表实现的. /** * 1.计算新容量 * 2.计算新阈值 * 3.根据新容量创建新数组,并将新数组赋值给table * 4.将老数组中的元素转移到新数组 */ final HashMap.Node<K, 为了利用&运算计算节点在数组中的下标 HashMap 多线程死循环问题? HashMap 的 get 方法能否判断某个元素是否在 map 中? 3. HashMap允许将 null key和null value,而 Hashtable 不允许null key和null value。 4. } if ("2".equals(next)) { listIterator.remove(); } if ("3"
因此,静态变量的范围在Java类中是开放式的。 如果我们希望对范围进行更严格的控制,则变量应在对象创建级别创建。 同样,定义静态变量也不是一个好习惯,因为它们违反了面向对象编程的原理。 3. Java中静态方法的目的? 答:Java提供了静态方法的功能来在类级别创建行为。 静态方法是类的所有对象所共有的。 我们不需要创建类的任何对象来调用静态方法。 为什么在Java中将main方法标记为静态方法? 答:Java中的main方法被标记为静态,因此JVM可以调用它来启动程序。 如果main方法不是静态的,那么Java进程将调用哪个构造函数? 因此,在Java中将主要方法标记为静态是众所周知的约定。 但是,如果我们去除static,那将会有歧义。 Java进程可能不知道要调用哪个类的方法来启动程序。 答:不,从Java 7开始,您需要main()方法来执行程序。 在Java的早期版本中,有一种解决方法可用于使用静态块执行。 但是现在这个差距已经缩小。 7.
char season4char = 3; short season4short = 3; int seasonint = 3; // switch可作用于char byte short int对应的包装类 Byte season4Byte = 3; Character season4Character = 3; Short season4Short = 3; Integer season4Integer 中保证重点代码一定要被执行的一种机制; finalize 是 Object 类中的一个方法,它的设计目的是保证对象在被垃圾收集前完成特定资源的回收的,但其执行“不稳定”,且有一定的性能问题,已经在 JDK 修饰的成员变量不参与序列化 参与序列化的引用类型也必须实现Serializable接口,否则会报NotSerializableException异常 最好提供serialVersionUID解决新老版本数据的兼容性问题 通过使用不可变的字符串,可以避免这种问题,无需额外的同步措施。 缓存哈希值:由于字符串在Java中经常被用作HashMap的键,字符串的不可变性确保了字符串的哈希值不会变化。