天道酬勤,学无止境

What is the difference between NtCreateProcess and ZwCreateProcess?

What is the difference between NtCreateProcess and ZwCreateProcess? In ntdll.dll, both NtCreateProcess and ZwCreateProcess point to exactly the same address

评论

In user-mode the groups of Nt and Zw APIs are identical. In kernel mode they are different. The Nt API contains the actual implementation. The Zw API uses a system-call mechanism and ensures that it is calling in kernel-mode and that there is no need to check the parameters if they contain user-mode addresses. Otherwise you could use the API from user-mode with kernel parameters which would not be good. So it is just a safety mechanism.

Aside from the already given answer (which I don't want to parrot), in my opinion the best answer can be found on OSR Online: here.

Alternatively you can read books on the Native API, such as the one from Gary Nebbett called "Windows NT/2000 Native API Reference", he devotes some space to this very question, or you can use WinDbg (pronounced as "wind-bag") yourself.

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐
  • Can There be a Process WITHOUT an Executable-Backed Image?
    After looking at various pages like OSR Online and NtInternals, it seems like NtCreateProcess (and ZwCreateProcess) specify that giving a handle to a memory section is optional! Does this mean that we can have processes that are not backed by executable images? If so, what could they be (or are they) used for potentially? Does that mean we can copy an executable entirely into memory and subsequently even delete the file from the disk, and have the process continue running?? That would seem like a really useful feature.
  • Windows最接近fork()的东西是什么?(What is the closest thing Windows has to fork()?)
    问题 我想这个问题说明了一切。 我想在Windows上进行分叉。 什么是最相似的操作以及如何使用它。 回答1 Cygwin在Windows上具有全功能的fork()。 因此,如果您可以接受使用Cygwin,那么在性能不成问题的情况下,可以解决此问题。 否则,您可以看看Cygwin如何实现fork()。 从一个相当老的Cygwin的体系结构文档中可以得出: 5.6。 流程创建Cygwin中的fork调用特别有趣,因为它无法在Win32 API上很好地映射。 这使得正确实施非常困难。 当前,Cygwin分支是一种非写时复制实现,类似于早期UNIX版本中提供的实现。 父进程派生子进程时发生的第一件事是,父进程为子进程初始化了Cygwin进程表中的空间。 然后,它使用Win32 CreateProcess调用创建一个暂停的子进程。 接下来,父进程调用setjmp保存其自己的上下文,并在Cygwin共享内存区域(在所有Cygwin任务之间共享)中设置指向此上下文的指针。 然后,通过从其自己的地址空间复制到暂挂的子代的地址空间中,来填充子代的.data和.bss节。 初始化子级的地址空间后,在父级等待互斥时运行子级。 孩子发现使用已保存的跳转缓冲区已将其分叉并进行了长时间跳跃。 然后,孩子设置父母正在等待的互斥锁,并阻止另一个互斥锁。 这是父级将其堆栈和堆复制到子级中的信号
  • 系统调用SystemCalls-1-总述
    (Owed by: 春夜喜雨 http://blog.csdn.net/chunyexiyu) 参考:https://en.wikipedia.org/wiki/System_call 总述内容主要来自于wikepedia中的介绍,主要回答三个问题: 什么是系统调用?系统调用的数目有多少?系统调用函数的通常分类是什么? 关于系统调用 计算机中系统调用,指计算机程序执行时请求操作系统内核提供的服务。调用通常可能涉及硬件相关服务(例如涉及硬盘驱动)、或创建和执行一个新进程、或与基础内核服务通信(比如进程调度)。系统调用在进程与操作系统之间提供了一个必要的接口。 在大多数系统中,系统调用仅在用户空间进程中使用;但在一些系统如IBM的OS/360和它的继承者系统中,特权系统代码也启用了系统调用。 from wikepdia --- In computing, a system call (commonly abbreviated to syscall) is the programmatic way in which a computer program requests a service from the kernel of the operating system on which it is executed. This may include hardware-related
  • 来自内存缓冲区的CreateProcess(CreateProcess from memory buffer)
    问题 我可以使用CreateProcess启动EXE。 我想在内存缓冲区中包含EXE的内容,并在其上执行CreateProcess(或等效操作),而不必将其写入文件。 有什么办法吗? 背景:我们制作游戏。 我们将简单的EXE发送给我们的发行商,然后由他们使用自己喜欢的DRM将其包装并出售给用户。 在某些情况下,用户会发现崩溃。 大多数崩溃都需要5分钟才能解决,但是补丁必须通过发行商才能解决,可能需要几天甚至几周的时间。 我不能只是将修补的EXE发送给播放器,因为它没有发行商的DRM。 我正在考虑将真实的游戏EXE分发到一个加密的数据文件中,以便包装的内容(外部EXE)只是解密并启动真实的EXE。 这样,我可以安全地分发修订,而无需禁用DRM。 回答1 实际上很容易。 我在3年前读过的一篇论文中已经描述了类似的技术。 Windows允许您使用CREATE_SUSPENDED标志调用CreateProcess函数,该标志告诉API使进程保持挂起状态,直到调用ResumeThread函数为止。 这使我们有时间使用GetThreadContext函数获取挂起的线程的上下文,然后EBX寄存器将保存指向PBE(进程环境块)结构的指针,我们需要确定该指针的基地址。 从PBE结构的布局中,我们可以看到ImageBaseAddress存储在第8个字节,因此[EBX + 8
  • Windows Linux子系统
    原文链接:https://blogs.msdn.microsoft.com/wsl/2016/04/22/windows-subsystem-for-linux-overview/   我们最近宣布了Windows平台上的Ubuntu上的Bash,它使本机Linux ELF64二进制文件可以通过Windows Linux子系统(WSL)在Windows上运行。该子系统是由Microsoft Windows内核团队创建的,并引起了很多兴奋。我们被问到的最常见问题之一是这种方法与传统虚拟机有何不同。在系列博客文章的第一篇中,我们将概述WSL,它将回答该问题和其他常见问题。在以后的文章中,我们将深入介绍所介绍的组成部分。代表Deepu Thomas发表。      Windows子系统的历史自成立以来,Microsoft Windows NT旨在允许Win32之类的环境子系统向应用程序提供程序化接口,而无需与内核内部的实现细节联系在一起。这使得NT内核在其初始版本中支持POSIX,OS / 2和Win32子系统。      早期的子系统被实现为用户模式模块,这些模块根据提供给该子系统应用程序的API发出适当的NT系统调用。所有应用程序都是PE / COFF可执行文件,是一组用于实现子系统API的库和服务,以及用于执行NT系统调用的NTDLL。当启动用户模式应用程序时
  • 为什么在Windows上创建新流程要比Linux昂贵?(Why is creating a new process more expensive on Windows than Linux?)
    问题 我听说在Windows机器上创建一个新进程比在Linux上花费更大。 这是真的? 有人可以解释为什么价格更高的技术原因,并提供这些原因背后的设计决策的历史原因吗? 回答1 mweerden:从第一天开始,NT就已为多用户设计,因此这并不是真正的原因。 但是,您对的是,进程创建在NT上的作用不如在Unix上重要,因为与Unix相比,NT与Unix相比,它主张多线程而非多处理。 Rob,确实,使用COW时fork相对便宜,但事实上,fork后面紧跟着一个执行程序。 执行人员也必须加载所有图像。 因此,讨论前叉的性能只是事实的一部分。 在讨论进程创建的速度时,最好区分NT和Windows / Win32。 就NT(即内核本身)而言,我认为进程创建(NtCreateProcess)和线程创建(NtCreateThread)不会比一般Unix显着慢。 可能还有更多的事情要做,但是在这里我看不出性能差异的主要原因。 但是,如果您查看Win32,您会注意到它会增加很多创建过程的开销。 首先,它要求CSRSS通知有关过程创建的过程,这涉及LPC。 它至少需要另外加载kernel32,并且必须执行许多其他簿记工作项,然后才能将该进程视为完整的Win32进程。 而且,我们不要忘记解析清单所带来的所有额外开销,检查映像是否需要兼容性填充程序,检查软件限制策略是否适用(yada yada)。 就是说
  • 命令行字符串的最大长度(Maximum Length of Command Line String)
    问题 在Windows中,命令行字符串的最大长度是多少? 这意味着如果我指定一个在命令行上接受参数的程序,例如abc.exe -name=abc 我编写的一个简单的控制台应用程序通过命令行获取参数,我想知道最大允许量是多少。 回答1 从Microsoft文档:命令提示符(Cmd.exe)命令行字符串限制 在运行Microsoft Windows XP或更高版本的计算机上,可以在命令提示符下使用的字符串的最大长度是8191个字符。 回答2 很抱歉,我想出一个旧的主意,但是我认为sunetos的答案不正确(或者不是完整的答案)。 我做过一些实验(在c#中使用ProcessStartInfo),看来命令行命令的'arguments'字符串在XP中限制为2048个字符,在Win7中限制为32768个字符。 我不确定8191限制指的是什么,但是我还没有找到任何证据。 回答3 作为@Sugrue,我还挖掘了一个旧线程。 为了解释为什么存在32768(我认为应该是32767,但应该相信实验测试结果)字符限制,我们需要深入研究Windows API。 无论您如何使用命令行参数启动程序,它都将进入ShellExecute,CreateProcess或其任何扩展版本。 这些API基本上包装了其他未正式记录的NT级别的API。 据我所知,这些调用包装了NtCreateProcess
  • 用%〜dp0引用的批处理文件路径有时在更改目录时更改的原因是什么?(What is the reason for batch file path referenced with %~dp0 sometimes changes on changing directory?)
    问题 我有一个具有以下内容的批处理文件: echo %~dp0 CD Arvind echo %~dp0 即使更改目录后的值, %~dp0也相同。 但是,如果我从CSharp程序运行此批处理文件,则CD之后, %~dp0的值将更改。 现在它指向新目录。 以下是我使用的代码: Directory.SetCurrentDirectory(//Dir where batch file resides); ProcessStartInfo ProcessInfo; Process process = new Process(); ProcessInfo = new ProcessStartInfo("mybatfile.bat"); ProcessInfo.UseShellExecute = false; ProcessInfo.RedirectStandardOutput = true; process = Process.Start(ProcessInfo); process.WaitForExit(); ExitCode = process.ExitCode; process.Close(); 为什么以不同的方式执行同一脚本的输出会有差异? 我在这里想念什么吗? 回答1 这个问题就此开始了讨论,并进行了一些测试以确定原因。 因此,在cmd.exe内进行一些调试之后
  • 2020-10-14
    JAVA进阶训练营 Java进阶训练营极客学院 突破能力瓶颈,到更好的公司拿更高的薪水课程设计对标阿里 P7 胜任力模型深度研究大厂 JD 和面试题案例导向,在实战中巩固理论简历直推一线互联网公司有点基础的都可以学习一、Java 基础1.JDK 和 JRE 有什么区别?2.== 和 equals 的区别是什么?3.两个对象的 hashCode()相同,则 equals()也一定为 true,对吗?4.final 在 java 中有什么作用?5.java 中的 Math.round(-1.5) 等于多少?6.String 属于基础的数据类型吗?7.java 中操作字符串都有哪些类?它们之间有什么区别?8.String str="i"与 String str=new String(“i”)一样吗?9.如何将字符串反转?10.String 类的常用方法都有那些?11.抽象类必须要有抽象方法吗?12.普通类和抽象类有哪些区别?13.抽象类能使用 final 修饰吗?14.接口和抽象类有什么区别?15.java 中 IO 流分为几种?16.BIO、NIO、AIO 有什么区别?17.Files的常用方法都有哪些?二、容器18.java 容器都有哪些?19.Collection 和 Collections 有什么区别?20.List、Set、Map 之间的区别是什么?21.HashMap 和
  • 计算机考研复试经典考题汇总(一次刷新世界观)
    操作系统 操作系统的特点? – 共享:资源可被多个并发执行的进程使用 – 并发:可以在同一时间间隔处理多个进程,需要硬件支持 – 虚拟:将物理实体映射成为多个虚拟设备 – 异步:进程执行走走停停,每次进程执行速度可能不同,但OS需保证进程每次执行结果相同 进程的三个组成部分? 程序段、数据段、PCB(Process Control Block) 并发与并行区别? 并发:同一间隔 并行:同一时刻 进程切换的过程? 保持处理机上下文 -> 更新PCB -> 把PCB移入相应队列(就绪、阻塞) -> 选择另一个进程并更新其PCB -> 更新内存管理的数据结构 -> 恢复处理机上下文 进程通信 1、低级通信方式 PV操作(信号量机制)。 – P:wait(S)原语,申请S资源 – V:signal(S)原语,释放S资源 2、高级通信方式:以较高效率传输大量数据的通信方式 – 共享存储(使用同步互斥工具操作共享空间) – 消息传递(进程间以格式化的消息进行数据交换,有中间实体,分为直接和间接两种,底层通过发送消息和接收消息两个原语实现) – 管道通信(两个进程中间存在一个特殊的管道文件,进程的输入输出都通过管道,半双工通信) 管程是什么? 由一组数据及对这组数据操作的定义组成的模块。同一时间只能有一个进程使用管程,即管程是互斥使用的,进程释放管程后需唤醒申请管程资源的等待队列上的进程
  • 2021最新Java面试题合集,看完面试稳了(上)
    点赞关注,不会迷路! 面试题模块介绍 这份面试题,包含的内容了十九了模块:Java 基础、容器、多线程、反射、对象拷贝、Java Web 模块、异常、网络、设计模式、Spring/Spring MVC、Spring Boot/Spring Cloud、Hibernate、Mybatis、RabbitMQ、Kafka、Zookeeper、MySql、Redis、JVM 。如下图所示: 可能对于初学者不需要后面的框架和 JVM 模块的知识,读者朋友们可根据自己的情况,选择对应的模块进行阅读。 适宜阅读人群 需要面试的初/中/高级 java 程序员想要查漏补缺的人想要不断完善和扩充自己 java 技术栈的人java 面试官 具体面试题 下面一起来看 208 道面试题,具体的内容。 一、Java 基础 1.JDK 和 JRE 有什么区别? 2.== 和 equals 的区别是什么? 3.两个对象的 hashCode()相同,则 equals()也一定为 true,对吗? 4.final 在 java 中有什么作用? 5.java 中的 Math.round(-1.5) 等于多少? 6.String 属于基础的数据类型吗? 7.java 中操作字符串都有哪些类?它们之间有什么区别? 8.String str="i"与 String str=new String(“i”)一样吗? 9
  • java面试常见的问题
    每年的金三银四是招聘旺季,也是跳槽旺季,很多程序员选择在这个时间段内进行跳槽,面试的企业五花八门,但是一般的企业的面试始终在一个范围内来回的问,下面我整理了一些面试中常问的面试题,看看里面有没有你不会的。 先上我整理归纳的知识点的图。 下面是详细内容: Java 基础语法 1.JDK 和 JRE 有什么区别? 2. == 和 equals 的区别是什么? 3. 两个对象的 hashCode() 相同,则 equals() 也一定为 true,对吗? 4. final 在 Java 中有什么作用? 5. Java 中的 Math. round(-1. 5) 等于多少? 6. String 属于基础的数据类型吗? 7. Java 中操作字符串都有哪些类?它们之间有什么区别? 8. String str="i"与 String str=new String(“i”)一样吗? 9. 如何将字符串反转? 10. String 类的常用方法都有哪些? 11. 抽象类必须要有抽象方法吗? 12. 普通类和抽象类有哪些区别? 13. 抽象类能使用 final 修饰吗? 14. 接口和抽象类有什么区别? 15. Java 中 IO 流分为几种? 16. BIO、NIO、AIO 有什么区别? 17. Files的常用方法都有哪些? java容器 18. Java 容器都有哪些? 19
  • Java面试题目大汇总(附参考答案)
    足足准备了长达3个月的面试,终于在上周拿到了阿里的offer! 博主汇总整理了一份我面试之前看的一些Java面试题目,可以说是非常详细! 分享给大家,希望对正在面试Java岗位的朋友有帮助哈~~ (文末附参考答案) Java基础相关面试题目: JDK 和 JRE 有什么区别?== 和 equals 的区别是什么?两个对象的 hashCode()相同,则 equals()也一定为 true,对吗?final 在 java 中有什么作用?java 中的 Math.round(-1.5) 等于多少?String 属于基础的数据类型吗?java 中操作字符串都有哪些类?它们之间有什么区别?String str="i"与 String str=new String("i")一样吗?如何将字符串反转?String 类的常用方法都有那些?抽象类必须要有抽象方法吗?普通类和抽象类有哪些区别?抽象类能使用 final 修饰吗?接口和抽象类有什么区别?java 中 IO 流分为几种?BIO、NIO、AIO 有什么区别?Files的常用方法都有哪些? 容器相关面试题目: java 容器都有哪些?Collection 和 Collections 有什么区别?List、Set、Map 之间的区别是什么?HashMap 和 Hashtable 有什么区别?如何决定使用 HashMap 还是 TreeMap
  • 阿里Java技术岗238道面试题:多线程+设计模式+Mybatis+Kafka。
    像阿里这种大厂,面试问题从来就不是一成不变的,知识掌握不全面是很难拿到offer的。 分享下我面试阿里所遇到的一些真题还有一些也是我在网上一起整理的,都总结了在一起,知识点囊括了:Java 基础,容器,多线程,反射,对象拷贝,Java Web,异常,网络,设计模式,Mybatis,RabbitMQ等。 会由于篇幅的原因,238道题目的答案不一一公布给大家,需要的朋友可以关注微信公众号:Java程序员聚集地,上面会有完整的答案以及解析。 下面一起来看 238 道面试题,具体的内容。 一、Java 基础 JDK 和 JRE 有什么区别?== 和 equals 的区别是什么?两个对象的 hashCode()相同,则 equals()也一定为 true,对吗?final 在 java 中有什么作用?java 中的 Math.round(-1.5) 等于多少?String 属于基础的数据类型吗?java 中操作字符串都有哪些类?它们之间有什么区别?String str="i"与 String str=new String(“i”)一样吗?如何将字符串反转?String 类的常用方法都有那些?抽象类必须要有抽象方法吗?普通类和抽象类有哪些区别?抽象类能使用 final 修饰吗?接口和抽象类有什么区别?java 中 IO 流分为几种?BIO、NIO、AIO 有什么区别
  • 面试必备:2021年最新面试题 200+
    面试题模块介绍 说了这么多,下面进入我们本文的主题,我们这份面试题,包含的内容了十九了模块:Java 基础、容器、多线程、反射、对象拷贝、Java Web 模块、异常、网络、设计模式、Spring/Spring MVC、Spring Boot/Spring Cloud、Hibernate、Mybatis、RabbitMQ、Kafka、Zookeeper、MySql、Redis、JVM 。如下图所示: 可能对于初学者不需要看后面的框架和 JVM 模块的知识,读者朋友们可根据自己的情况,选择对应的模块进行阅读。 适宜阅读人群 需要面试的初/中/高级 java 程序员 想要查漏补缺的人 想要不断完善和扩充自己 java 技术栈的人 java 面试官 具体面试题 下面一起来看 208 道面试题,具体的内容。 一、Java 基础 1.JDK 和 JRE 有什么区别? 2.== 和 equals 的区别是什么? 3.两个对象的 hashCode()相同,则 equals()也一定为 true,对吗? 4.final 在 java 中有什么作用? 5.java 中的 Math.round(-1.5) 等于多少? 6.String 属于基础的数据类型吗? 7.java 中操作字符串都有哪些类?它们之间有什么区别? 8.String str="i"与 String str=new String(“i
  • 10月你不可错过的Java岗面试题复盘总结!
    为了方便大家之后的面试复习,我把各类面试题给汇总了一下,每道题都是经过自己筛选后觉得需要掌握的,此次整理包括 Java基础、数据结构与算法、计算机网络、操作系统、数据库、多线程等。后面我会把这些问题的解答陆续放出来。 Java基础知识 java中==和equals和hashCode的区别int与integer的区别抽象类的意义接口和抽象类的区别能否创建一个包含可变对象的不可变对象?谈谈对java多态的理解String、StringBuffer、StringBuilder区别泛型中extends和super的区别进程和线程的区别final,finally,finalize的区别序列化的方式string 转换成 integer的方式及原理静态属性和静态方法是否可以被继承?是否可以被重写?以及原因?成员内部类、静态内部类、局部内部类和匿名内部类的理解,以及项目中的应用讲一下常见编码方式?如何格式化日期?Java的异常体系什么是异常链throw和throws的区别反射的原理,反射创建类实例的三种方式是什么。java当中的四种引用深拷贝和浅拷贝的区别是什么?什么是编译器常量?使用它有什么风险?你对String对象的intern()熟悉么?a=a+b与a+=b有什么区别吗?静态代理和动态代理的区别,什么场景使用?Java中实现多态的机制是什么?如何将一个Java对象序列化到文件里
  • 史上最全Java工程师面试题汇总,全会月薪至少3W
    Java基础知识 java中==和equals和hashCode的区别int与integer的区别抽象类的意义接口和抽象类的区别能否创建一个包含可变对象的不可变对象?谈谈对java多态的理解String、StringBuffer、StringBuilder区别泛型中extends和super的区别进程和线程的区别final,finally,finalize的区别序列化的方式string 转换成 integer的方式及原理静态属性和静态方法是否可以被继承?是否可以被重写?以及原因?成员内部类、静态内部类、局部内部类和匿名内部类的理解,以及项目中的应用讲一下常见编码方式?如何格式化日期?Java的异常体系什么是异常链throw和throws的区别反射的原理,反射创建类实例的三种方式是什么。java当中的四种引用深拷贝和浅拷贝的区别是什么?什么是编译器常量?使用它有什么风险?你对String对象的intern()熟悉么?a=a+b与a+=b有什么区别吗?静态代理和动态代理的区别,什么场景使用?Java中实现多态的机制是什么?如何将一个Java对象序列化到文件里?说说你对Java反射的理解说说你对Java注解的理解说说你对依赖注入的理解说一下泛型原理,并举例说明Java中String的了解String为什么要设计成不可变的?Object类的equal和hashCode方法重写,为什么?
  • 史上最全Java岗大厂面试题复盘总结(2021年)
    为了方便大家之后的面试复习,我把各类面试题给汇总了一下,每道题都是经过自己筛选后觉得需要掌握的,此次整理包括 Java基础、数据结构与算法、计算机网络、操作系统、数据库、多线程等。后面我会把这些问题的解答陆续放出来。 目前只是展示了面试题,有需要完整面试题加答案的朋友,点此免费领取!! Java基础知识 java中==和equals和hashCode的区别int与integer的区别抽象类的意义接口和抽象类的区别能否创建一个包含可变对象的不可变对象?谈谈对java多态的理解String、StringBuffer、StringBuilder区别泛型中extends和super的区别进程和线程的区别final,finally,finalize的区别序列化的方式string 转换成 integer的方式及原理静态属性和静态方法是否可以被继承?是否可以被重写?以及原因?成员内部类、静态内部类、局部内部类和匿名内部类的理解,以及项目中的应用讲一下常见编码方式?如何格式化日期?Java的异常体系什么是异常链throw和throws的区别反射的原理,反射创建类实例的三种方式是什么。java当中的四种引用深拷贝和浅拷贝的区别是什么?什么是编译器常量?使用它有什么风险?你对String对象的intern()熟悉么?a=a+b与a+=b有什么区别吗?静态代理和动态代理的区别,什么场景使用
  • Java知识体系!别再说你不会JVM性能监控和调优了,附大厂真题面经
    MySQL性能调优问题有哪些?怎么学? 关于这个,给大家看一份学习大纲(xmind)文件,每一个分支里面会有详细的介绍。 这里都是以图片形式展示介绍,如要下载原文件以及更多的性能调优笔记可以看文末 Java基础 JDK 和 JRE 有什么区别?== 和 equals 的区别是什么?两个对象的 hashCode()相同,则 equals()也一定为 true,对吗?final 在 java 中有什么作用?java 中的 Math.round(-1.5) 等于多少?String 属于基础的数据类型吗?java 中操作字符串都有哪些类?它们之间有什么区别?String str="i"与 String str=new String(“i”)一样吗?如何将字符串反转?String 类的常用方法都有哪些?抽象类必须要有抽象方法吗?普通类和抽象类有哪些区别?抽象类能使用 final 修饰吗?接口和抽象类有什么区别?java 中 IO 流分为几种?BIO、NIO、AIO 有什么区别?Files的常用方法都有哪些? JVM 说一下 jvm 的主要组成部分?及其作用?说一下 jvm 运行时数据区?说一下堆栈的区别?队列和栈是什么?有什么区别?什么是双亲委派模型?说一下类加载的执行过程?怎么判断对象是否可以被回收?java 中都有哪些引用类型?说一下 jvm 有哪些垃圾回收算法?说一下 jvm
  • 史上最全大厂面试题复盘总结(Java岗)
    为了方便大家之后的面试复习,我把各类面试题给汇总了一下,每道题都是经过自己筛选后觉得需要掌握的,此次整理包括 Java基础、数据结构与算法、计算机网络、操作系统、数据库、多线程等。后面我会把这些问题的解答陆续放出来。 有需要整理好的pdf版面试题+答案的朋友,点此免费获取! Java基础知识 java中==和equals和hashCode的区别int与integer的区别抽象类的意义接口和抽象类的区别能否创建一个包含可变对象的不可变对象?谈谈对java多态的理解String、StringBuffer、StringBuilder区别泛型中extends和super的区别进程和线程的区别final,finally,finalize的区别序列化的方式string 转换成 integer的方式及原理静态属性和静态方法是否可以被继承?是否可以被重写?以及原因?成员内部类、静态内部类、局部内部类和匿名内部类的理解,以及项目中的应用讲一下常见编码方式?如何格式化日期?Java的异常体系什么是异常链throw和throws的区别反射的原理,反射创建类实例的三种方式是什么。java当中的四种引用深拷贝和浅拷贝的区别是什么?什么是编译器常量?使用它有什么风险?你对String对象的intern()熟悉么?a=a+b与a+=b有什么区别吗?静态代理和动态代理的区别,什么场景使用