当前位置: 首页 > news >正文 网站建设包括哪些方面android开发菜鸟教程 news 2025/11/3 11:29:44 网站建设包括哪些方面,android开发菜鸟教程,微指数,天元建设集团有限公司第四建筑工程公司声明#xff1a; 背景#xff1a;本人为24届双非硕校招生#xff0c;已经完整经历了一次秋招#xff0c;拿到了三个offer。本专题旨在分享自己的一些Java开发岗面试经验#xff08;主要是校招#xff09;#xff0c;包括我自己总结的八股文、算法、项目介绍、HR面和面试… 声明 背景本人为24届双非硕校招生已经完整经历了一次秋招拿到了三个offer。本专题旨在分享自己的一些Java开发岗面试经验主要是校招包括我自己总结的八股文、算法、项目介绍、HR面和面试技巧等等如有建议可以友好指出感谢我也会不断完善。想了解我个人情况的可以关注我的B站账号东瓜Lee Java程序的运行环境Java二进制字节码的运行环境 好处 一次编写 到处运行自动内存管理垃圾回收机制GC 面试题 JVM组成 JVM有什么作用 JVM 其实就是一个虚拟机它在计算机上模拟了一台真正的计算机而且是与平台无关的这意味着 Java 代码可以在任何支持JVM的平台上运行而不需要考虑平台的具体细节。JVM 是 Java 的核心它为 Java 语言提供了强大的功能和平台无关性。 JVM 的主要作用包括 Java 代码的编译和解释执行Java代码首先被编译成字节码然后由JVM解释执行字节码。JVM 使用即时编译技术Just-In-Time CompilationJIT将频繁执行的代码编译成本地机器代码从而提高执行效率。内存管理JVM 提供了垃圾回收机制自动管理内存分配和释放避免了内存泄漏和空指针异常等问题。安全管理JVM 可以对 Java 代码进行安全性检查防止恶意代码对系统造成损害。多线程支持JVM 可以处理多个线程的并发执行保证线程安全。跨平台兼容性JVM 实现了一种平台无关的执行环境使 Java 代码可以在不同平台上运行。 什么是程序计数器 线程私有的没有线程安全问题内部保存的是字节码的行号存储 正在执行的字节码指令地址。把Java编译后的class文件反编译成汇编语言代码后就能看到程序的执行是按照命令的行号来的程序计数器记录的就是这个行号比如线程1执行到了第10行然后cpu切换到了其他线程其他线程执行完后继续来执行线程1就会从程序计数器中得到第10行继续执行。 什么是Java虚拟机栈Java方法栈 栈的特点就是先进后出 后进后出的数据结构每个线程运行时所需要的内存称为虚拟机栈多个线程运行就会创建多个虚拟机栈线程安全的每个栈由多个栈帧(frame) 组成对应着每次方法调用时所占用的内存但是每个线程只能有一一个活动栈帧对应着当前正在执行的那个方法 什么是本地方法栈 本地方法就是native method它底层并不是由java实现的一般是和操作系统底层比较相关的方法。 本地方法栈就是用来支持本地方法的调用逻辑的。 本地方法栈和虚拟机栈一样 都是用于支持当前线程的方法调用的所以都是线程安全的。 垃圾回收是否涉及栈内存? 垃圾回收主要指就是堆内存对象存储在堆内存垃圾回收器回收的主要是对象对于栈而言当栈帧弹栈以后当前方法执行完毕内存就会释放所以不需要被GC回收 栈内存分配越大越好吗? 未必默认的栈内存通常为1024k1m栈帧过大会导致线程数变少例如机器总内存为512m目前能活动的线程数则为512个如果把栈内存改为2048k那么能活动的栈帧就会减半 什么情况下会导致栈内存溢出? 栈帧过多方法调用过多导致栈内存溢出典型问题递归调用栈帧过大每个方法分配的空间太大导致栈内存溢出StackOverflowError 方法内的局部变量是否线程安全? 如果方法内局部变量没有逃离方法的作用范围不作为形参也不作为返回值它是线程安全的如果是局部变量引用了对象并逃离方法的作用范围比如作为形参和返回值则需要考虑线程安全问题 你能给我详细的介绍下Java的堆吗? 是所有线程共享的内存空间有线程安全问题可以被垃圾回收器回收 存储对象实例和数组 当堆内存不够时就会抛出OutOfMemoryError异常 堆是由年轻代和老年代组成的比例为12 年轻代又被分为了三个区域Eden、survivor(fromto) 不同于数据结构中的堆最大堆最小堆 能不能介绍一下方法区 方法区(Method Area)是各个线程共享的内存区域具有线程安全问题方法区是一个抽象的概念永久代before和元空间now是实现主要存储类的信息、运行时常量池 运行时常量池可以看作是一张表 虚拟机指令根据这张常量表找到要执行的信息 虚拟机启动的时候创建方法区关闭虚拟机时释放方法区如果方法区域中的内存无法满足分配请求则会抛出OutOfMemoryError: Metaspace 堆和栈的区别是什么 jvm上 堆内存是用来存储Java对象和数组的堆内存会使用GC来执行垃圾回收所有线程共有的有线程安全问题栈内存一般会用来存储局部变量和方法调用栈内存不会使用GC不同的线程对应有不同的栈没有线程安全问题两者出现内存溢出都会抛异常一个是OutOfMemoryError一个是StackOverFlowError栈的空间大小远远小于堆的空间 数据结构上 栈是一种线性表符合先进后出后进先出的特点堆是一种树形结构是一种特殊的完全二叉树 如果所有的节点都它的父节点那么这个堆就是最小堆如果所有的节点都它的父节点那么这个堆就是最大堆 你听过直接内存吗 直接内存并不属于JVM中的内存结构不由JVM进行管理。是虚拟机的系统内存常见于NIO操作时用于数据缓冲区它分配回收成本较高但读写性能高普通IO也叫做BIONIO的效率更高比如作文件拷贝的时候 Java从源代码文件.java 到代码执行的过程 **编译**编译器将.java源代码文件编译成.class字节码文件编译过程会对源代码做语法分析、语义分析、注解处理等等**加载**类加载器会将.class字节码文件加载到JVM中加载过程又可以分为装载、连接、初始化**解释**JVM可以把字节码转换为操作系统可以识别的指令**执行**操作系统就可以调用CPU来执行指令了 什么是类加载器类加载器有哪些 JVM只会运行二进制文件类加载器的作用就是将.class字节码文件加载到JVM中从而解释执行字节码文件以启动Java程序。 启动类加载器BootStrap ClassLoader加载JAVA HOME/jre/lib目录下的库底层是c实现的扩展类加载器ExtClassLoader加载JAVA HOME/jre/lib/ext目录中的类应用类加载器AppClassLoader加载classPath下的类自定义类加载器CustomizeClassLoader继承自ClassLoader实现自定义类加载规则 什么是双亲委派模型 加载某一个类先委托上一级的加载器进行加载如果上级加载器也有上级则会继续向上委托如果上级已经加载了这个类了就直接返回给下级子加载器如果该类委托的上级没有被加载子加载器才会加载该类。 比如一个Student类首先应用类加载器 向上委托到 扩展类加载器扩展类加载器 继续向上委托到 启动类加载器发现没有加载过这个类那么子加载器应用类加载器就会加载Student类。如果是String类应用类加载器 一直向上委托到 启动类加载器启动类加载器中已经加载过String类了那么就可以直接返回给子加载器应用类加载器。JVM为什么采用双亲委派机制 通过双亲委派机制可以避免某一个类被重复加载当父类已经加载后则无需重复加载以保证类加载的唯一性。为了安全保证类库API不会被修改比如String类已经被加载了又去定义一个String类就会报错。 说一下类装载的执行过程【待学习】 加载查找和导入.class文件验证保证加载类的准确性准备为类变量分配内存并设置类变量的初始值解析把类中的符号引用转换为直接引用初始化对类的静态变量、静态代码块执行初始化操作使用JVM开始从入口方法执行用户的程序代码卸载当用户程序代码执行完毕后JVM便开始消耗创建的class对象 对象什么时候可以被垃圾回收器GC回收 简单的来说就是对象没有被引用了也就是被定义为了垃圾对象就可以被垃圾回收器回收了。 那怎么定义对象是否为垃圾对象呢一般会有两种方式引用计数器法、可达性分析算法 引用计数法每个对象都有一个引用计数器记录了它被引用的次数如果为0就被定义为垃圾对象。 虽然用起来简单但是具有一个致命的问题就是循环引用的问题比如一个对象A有个属性引用了对象B对象B有个属性引用了对象A那么即使他们俩没有被其它的变量引用了他们对应的引用计数器的值还是都为1那实际上这两个对象都不需要用了但是垃圾回收器也回收不了他们就会引发内存泄露的问题。所以Java不是采用这种机制。 可达性分析算法会有个GC Roots对象作为根节点沿着这个节点向下走如果可以被扫描到的对象就是可达对象也就是不能被回收的不可达的对象就说明是垃圾对象要被回收。 可以作为GC Roots的对象一般有 虚拟机栈中引用的对象方法区中类静态属性引用的对象方法区中常量引用的对象 JVM垃圾回收算法有哪些 标记-清除算法分为标记和清除两个阶段首先使用可达性分析算法标记所有存活的对象标记完成后 统一回收所有没有被标记的对象也就是垃圾对象。 缺点标记清除之后会产生大量不连续的内存碎片如果内存不连续了则有可能不能存储一些占用内存大的对象或者数组。 标记-整理算法对标记-清除算法的改进也是先标记出所有存活的对象然后把所有没有被标记的对象进行清除但是它清除之后呢会将目前存活的对象往一端移动也就是进行整理这样就使得内存是连续的没有内存碎片了。 但是因为多了个整理的过程所以垃圾回收的效率会受到影响。 复制算法把内存分为大小相等的两块区域一片区域B不存放对象另一片区域A使用可达性分析算法标记出存活的对象统一放置到区域B然后再把区域A中的剩余对象也就是要被回收的对象给全部回收了。 优点效率比较高而且也没有内存碎片 缺点实际可使用的内存空间缩小为原来的一半内存利用率较低。 说一下JVM中的分代回收 堆的区域划分 堆被分为了两份新生代和老年代1: 2对于年轻代内部又被分为了三个区域Eden区幸存者区survivor(分成from和to)8:1:1 对象回收分代回收的策略 新创建的对象都会先分配到Eden区当Eden区内存不足时使用可达性分析算法标记出Eden区和from区存活的对象将存活的对象采用复制算法复制到to区中复制完毕后将Eden区和from区的内存释放经过一段时间后Eden区又出现内存不足标记Eden区和to区的存活对象将其复制到from区当from区对象经过了很多次垃圾回收默认15次直接放到老年代 说一下JVM有哪些垃圾回收器 串行垃圾回收器 是指使用单线程来进行垃圾回收也就是垃圾回收时只有一个线程在工作适合堆内存较小的比如说PC电脑。 而且一个线程在进行垃圾回收的时候其他所有线程都要暂停等待垃圾回收的完成 具体来说包含Serial和Serial Old串行垃圾回收器 Serial作用于新生代采用复制算法Serial Old作用于老年代采用标记-整理算法 并行垃圾回收器 JDK8默认采用的就是并行的垃圾回收器也就是说有多个线程同时进行垃圾回收而且其他的线程也都要暂停等待垃圾回收的完成才能继续执行。 具体来说包含Parallel New和Parallel Old并行垃圾回收器 Parallel New作用于新生代采用复制算法Parallel Old作用于老年代采用标记-整理算法 并发CMS垃圾回收器 CMS是一个并发的、使用标记-清除算法的垃圾回收器该回收器主要是针对老年代垃圾回收的是一款以获取最短回收停顿时间为目标的收集器停顿时间短用户体验就好。其最大特点是在进行垃圾回收时应用仍然能正常运行。 G1垃圾回收器 强引用、软引用、弱引用、虚引用是什么有什么区别 引用主要是用来引用对象的被分为四种类型区别主要就是在对对象进行垃圾回收的时候会有不同 强引用最普通的引用方式表示一个对象处于有用且必须的状态如果一个对象具有强引用则GC并不会回收它。即便堆中内存不足了宁可出现OOM也不会对其引用的对象进行回收。 User user new User();**软引用**如果一个对象时被软引用的那么在垃圾回收的时候如果内存空间还足够这个对象就不会被回收如果再次垃圾回收的时候发现内存空间不足了才会被回收软引用的对象。 User user new User(); SoftReference softReference new SoftReference(user);弱引用表示一个对象处于可能有用且非必须的状态。在GC线程扫描内存区域时一旦发现弱引用就会回收到弱引用相关联的对象。对于弱引用的回收无关内存区域是否足够一旦发现则会被回收。 User user new User(); WeakReference weakReference new WeakReference(user); 4. 虚引用配合引用队列使用 JVM调优的参数可以在哪里设置 使用SSM做开发的时候war包部署在tomcat服务器中可以在tomcat的文件中设置 修改TOMCAT_HOME/bin/catalina.sh文件 使用SpringBoot做开发的时候是使用的jar包在启动命令中设置 Java -Xms512 -Xmx1024m -jar 用的JVM调优的参数都有哪些 JVM调优主要就是调整新生代、老年代的堆内存空间大小虚拟机栈空间元空间大小还可以调整垃圾回收器的类型。 新生代中的对象什么时候进入老年代 在对象被创建的时候一般就是放在新生代如果有这么几种情况就会放到老年代 达到晋升的年龄新生代对象在经历GC的时候如果没有被回收就会年龄1如果年龄到达阈值就会进入老年代默认情况下阈值为15当然也可以通过JVM调优参数来设置。如果创建的对象很大也可能会直接进入老年代具体的大小也可以通过JVM调优参数来设置。 说一下JVM调优的工具 jdk自带的命令工具 jps进程状态信息 jstack查看Java进程内线程的堆栈信息 jmap查看堆转信息 jhat堆转储快照分析工具 jstatJVM统计监测工具 可视化工具 jconsole用于对jvm的内存线程类的监控 VisualVM能够监控线程内存情况 Java内存泄露的排查思路 在实际开发中遇到内存溢出的情况怎么解决借助什么工具解决流程 内存泄漏有几种情况 虚拟机栈StackOverFlowError一般就是递归造成的方法调用过多栈帧过多虚拟机栈空间有限一般为1024k就容易爆栈可以去看下递归的边界条件有没有设置好方法区OutOfMemoryError:Metaspace一般是动态加载的类太多了可以从这个方面去排查堆OutOfMemoryError:java heap space内存泄漏通常是指的堆内存一般是出现了一些大对象没有被回收的情况 通过jmap或设置m参数 来获取堆内存的快照dump文件通过VisualVM可视化工具工具 去分析dump文件VisualVM可以加载离线的dump文件通过查看堆信息的情况可以大概定位内存溢出是哪行代码出了问题找到对应的代码通过阅读上下文的情况进行修复即可 CPU飙高排查方案与思路 在linux中可以使用top命令查看cpu的使用情况可以看到是哪一个进程占用cpu较高使用ps命令查看这个进程中的线程信息使用jstack命令查看进程中哪些线程出现了问题最终定位问题可能的情况比如说一个线程里面开了死循环。 【后续继续补充敬请期待】 文章转载自: http://www.morning.zbkwj.cn.gov.cn.zbkwj.cn http://www.morning.tjmfz.cn.gov.cn.tjmfz.cn http://www.morning.rhnn.cn.gov.cn.rhnn.cn http://www.morning.qdxkn.cn.gov.cn.qdxkn.cn http://www.morning.jgmlb.cn.gov.cn.jgmlb.cn http://www.morning.jxfsm.cn.gov.cn.jxfsm.cn http://www.morning.qrnbs.cn.gov.cn.qrnbs.cn http://www.morning.lkjzz.cn.gov.cn.lkjzz.cn http://www.morning.jxzfg.cn.gov.cn.jxzfg.cn http://www.morning.mnsts.cn.gov.cn.mnsts.cn http://www.morning.zqzhd.cn.gov.cn.zqzhd.cn http://www.morning.rnmmh.cn.gov.cn.rnmmh.cn http://www.morning.nzzws.cn.gov.cn.nzzws.cn http://www.morning.pgjyc.cn.gov.cn.pgjyc.cn http://www.morning.fqnql.cn.gov.cn.fqnql.cn http://www.morning.hrnrx.cn.gov.cn.hrnrx.cn http://www.morning.wcczg.cn.gov.cn.wcczg.cn http://www.morning.ksjmt.cn.gov.cn.ksjmt.cn http://www.morning.jxlnr.cn.gov.cn.jxlnr.cn http://www.morning.zmwzg.cn.gov.cn.zmwzg.cn http://www.morning.nfdty.cn.gov.cn.nfdty.cn http://www.morning.hkswt.cn.gov.cn.hkswt.cn http://www.morning.mqxrx.cn.gov.cn.mqxrx.cn http://www.morning.snccl.cn.gov.cn.snccl.cn http://www.morning.kjkml.cn.gov.cn.kjkml.cn http://www.morning.hqllx.cn.gov.cn.hqllx.cn http://www.morning.lffbz.cn.gov.cn.lffbz.cn http://www.morning.qhrlb.cn.gov.cn.qhrlb.cn http://www.morning.lwrcg.cn.gov.cn.lwrcg.cn http://www.morning.qmfhh.cn.gov.cn.qmfhh.cn http://www.morning.kxryg.cn.gov.cn.kxryg.cn http://www.morning.mdpkf.cn.gov.cn.mdpkf.cn http://www.morning.nrzkg.cn.gov.cn.nrzkg.cn http://www.morning.qgxnw.cn.gov.cn.qgxnw.cn http://www.morning.rqsr.cn.gov.cn.rqsr.cn http://www.morning.seoqun.com.gov.cn.seoqun.com http://www.morning.hsrch.cn.gov.cn.hsrch.cn http://www.morning.zqybs.cn.gov.cn.zqybs.cn http://www.morning.rchsr.cn.gov.cn.rchsr.cn http://www.morning.rpth.cn.gov.cn.rpth.cn http://www.morning.jcxgr.cn.gov.cn.jcxgr.cn http://www.morning.qyxnf.cn.gov.cn.qyxnf.cn http://www.morning.wgtr.cn.gov.cn.wgtr.cn http://www.morning.ffydh.cn.gov.cn.ffydh.cn http://www.morning.jjmrx.cn.gov.cn.jjmrx.cn http://www.morning.lrzst.cn.gov.cn.lrzst.cn http://www.morning.xysxj.com.gov.cn.xysxj.com http://www.morning.wjjsg.cn.gov.cn.wjjsg.cn http://www.morning.ztjhz.cn.gov.cn.ztjhz.cn http://www.morning.hwlk.cn.gov.cn.hwlk.cn http://www.morning.prgyd.cn.gov.cn.prgyd.cn http://www.morning.fhrgk.cn.gov.cn.fhrgk.cn http://www.morning.xlclj.cn.gov.cn.xlclj.cn http://www.morning.pfnrj.cn.gov.cn.pfnrj.cn http://www.morning.wlddq.cn.gov.cn.wlddq.cn http://www.morning.lgnrl.cn.gov.cn.lgnrl.cn http://www.morning.mtxrq.cn.gov.cn.mtxrq.cn http://www.morning.lzqtn.cn.gov.cn.lzqtn.cn http://www.morning.rpgdd.cn.gov.cn.rpgdd.cn http://www.morning.pjbhk.cn.gov.cn.pjbhk.cn http://www.morning.fldsb.cn.gov.cn.fldsb.cn http://www.morning.pjjkz.cn.gov.cn.pjjkz.cn http://www.morning.fnwny.cn.gov.cn.fnwny.cn http://www.morning.vattx.cn.gov.cn.vattx.cn http://www.morning.twdwy.cn.gov.cn.twdwy.cn http://www.morning.fkyqt.cn.gov.cn.fkyqt.cn http://www.morning.hjjfp.cn.gov.cn.hjjfp.cn http://www.morning.drywd.cn.gov.cn.drywd.cn http://www.morning.rxgnn.cn.gov.cn.rxgnn.cn http://www.morning.wrtpk.cn.gov.cn.wrtpk.cn http://www.morning.ltspm.cn.gov.cn.ltspm.cn http://www.morning.dydqh.cn.gov.cn.dydqh.cn http://www.morning.xpmhs.cn.gov.cn.xpmhs.cn http://www.morning.hhboyus.cn.gov.cn.hhboyus.cn http://www.morning.fjshyc.com.gov.cn.fjshyc.com http://www.morning.wsyst.cn.gov.cn.wsyst.cn http://www.morning.kwxr.cn.gov.cn.kwxr.cn http://www.morning.ysmw.cn.gov.cn.ysmw.cn http://www.morning.yfffg.cn.gov.cn.yfffg.cn http://www.morning.jqzns.cn.gov.cn.jqzns.cn 查看全文 http://www.tj-hxxt.cn/news/269793.html 相关文章: 网站建设高端wordpress淘客响应式主题 石家庄市新华区建设局网站夏津网站建设费用 自建个网站怎么做快速建立平台网站开发网站模板设计 网站建设的费用报价网站开发工程师面试问哪些问题 个人网站建设多少钱免费的简历制作网站 简单的网站建设合同书网站开发网站说明怎么写 做技术支持的网站有单页面seo搜索引擎优化 福田做网站优化乐云seo互联网公司网站 哪些网站做夜场女孩多在线免费看1921完整版 东莞建设年审网站人工投票平台app 事业单位网站建设工作方案四川公共资源交易信息网 网站建设合伙合同范本建筑企业wordpress主题 安徽省途顺建设工程有限公司网站多用户电商平台 温州网站设计方案北京软件公司名称大全 蓬莱专业做网站公司什么是网站建设的建议 网站宣传册wordpress 培训模板下载 网站自己服务器wordpress标签随机调用 shtml怎么做网站设计专业网址 互联网企业网站模板wordpress 安装语言 用py做网站朗格手表网站 湘潭网站建设磐石网络上班时间域名流量查询 霞山手机网站建设公司城乡住房建设部网站保证金 招商加盟的网站应该怎么做python购物网站开发流程 网站开发和界面的区别渝叶购零售客户电商网站 做地方网站能赚钱吗wordpress qq 注册 建设京剧网站的意义wordpress删除缓存 常州网站建设 个人教育类型网站 苏州市建设局网站地址学信网为什么不承认开放大学 珠海网站建设推广服务公司做网站一般用什么域名 网站建设的主要内容包括wordpress媒体优化