刷面试题
刷题的重要性,不用多说。对于应届生或工作年限不长的人来说,刷面试题一方面能够尽可能地快速自己对某个技术点的理解,另一方面在面试时,有一定几率被问到相同或相似题,另外或多或少也能够为自己面试增加一些自信心,可见适当的刷题是很有必要的。
开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】
-
前端字节跳动真题解析
-
【269页】前端大厂面试题宝典
最后平时要进行自我分析与评价,做好职业规划,不断摸索,提高自己的编程能力和抽象思维能力。大厂面试远没有我们想的那么困难,摆好心态,做好准备,你也可以的。
一、前言
经过前几篇博文对堆内存以及垃圾收集机制的学习,相信小伙伴们已经建立了一套比较完整的理论体系!本篇博文就根据已有的理论知识,通过可视化工具来实战一番。
二、JAVA监视与管理控制台
今天要讲解的工具位于JDK/bin
目录下,大家可以发现该目录下有很多可执行文件,这里都是JDK
为我们提供用于分析内存的一些工具。我们重点看看jconsole.exe
-JAVA监视与管理控制台。
先运行以下程序:
public class Test {
private static List<Test> list = new ArrayList<Test>();
public static void main(String[] args) throws InterruptedException {
for(int i=0; i<1000; i++) {
Test test = new Test();
list.add(test);
Thread.sleep(50);
}
}
}
再双击运行可视化工具,这里会让你选择要监控的程序,我们选择刚刚运行的程序。如下图:
该页面只是一个概览页面,我们可以点进去上方导航栏的内存页,进去后我们可查看内存中各部分的使用情况图表,这里我们选择Eden
区的查看。
可看到内存使用呈锯齿波状态,因为我们在循环中不断的产生新对象,而新对象又在Eden
区中创建,所以内存使用会不断增加,当达到所设定的最大值后就会进行内存的回收,由于每个新生的对象都被存入到了List中,因此都不属于垃圾对象(因为处于关系网中),所以就要复制到另一个Survivor
中,如果另一个Survivor
区也满了,就会复制到年老区了。可查看上图右下角绿色图,在运行中会动态更新的,变化情况和刚刚说的是一样的。
当我们使用多线程的时候,会经常出现程序一直运行不会停止的情况,有可能出现死锁,有可能出现了死循环,可以通过该工具检测出来,先运行以下程序:
public class Test {
public static void main(String[] args) throws InterruptedException {
new Thread(new Runnable(){
@Override
public void run() {
while(true){}
}
}).start();
}
}
再点击导航栏上的线程进入线程查看页:
进入后页面长这个样子,看下方红色标记部分,根据我们刚刚执行的代码来看,代码开启了一个线程,作用就是执行死循环,线程的名字为默认的“Thread-0
”。因为有了死循环,所以程序无法正常退出,查看堆栈跟踪,发现程序停在Test类的第14行,查看代码可发现那里是个死循环。注意:这里只是个测试例子,因此线程的名字用的是默认的,在实际环境中应为每个线程命名,在跟踪调试的过程中会大大减少工作量。
接下来我们来测试死锁的情况,运行以下代码:
public class Test {
private static Object obj1 = new Object();
private static Object obj2 = new Object();
public static void main(String[] args) throws InterruptedException {
for(int i=0; i<1000; i++) { // 循环100次,增加死锁的概率
new Thread(new Runnable() {
@Override
public void run() {
synchronized(obj1){ // 先申请obj1
synchronized(obj2){ // 再申请obj2
### 最后
小编综合了阿里的面试题做了一份前端面试题PDF文档,里面有面试题的详细解析
**[开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】](https://bbs.csdn.net/forums/4304bb5a486d4c3ab8389e65ecb71ac0)**
![](https://img-blog.csdnimg.cn/img_convert/45f2869b91b538dd3bb3290ba13bc806.png)
![](https://img-blog.csdnimg.cn/20210419193354991.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0tlcGxlcl9JSQ==,size_16,color_FFFFFF,t_70)
虽只说了一个公司的面试,但我们可以知道大厂关注的东西并举一反三,通过一个知识点延伸到另一个知识点,这是我们要掌握的学习方法,小伙伴们在这篇有学到的请评论点赞转发告诉小编哦,谢谢大家的支持!