The first record --两次面试

小菜鸡两次面试总结(钉钉,阿里猫人电商):

  • 2020.2.29
    -钉钉面试
    这是我第次面试,准备的稀里糊涂,很不充分,不过项目是前提,因为涉及到技术的运用,我觉得大公司一开始都是会问到项目的大概,一小部分会开始细究项目细节,面试第一步:

1自我介绍不能紧张!随和一点),

2介绍一下你的项目 + 项目中你觉得比较难的点、你是怎么想的 / 怎么解决的这一步因为自己没有准备,所以说的很碎很迷糊,因为不知道讲些什么,早知道就准备一下了,所以会让面试官觉得你对自己的项目不是很熟悉,该了解的你没有了解到

3你对自己下一步有什么想法吗? 尽量说细一点(巴拉巴拉一堆,也就表明差不多end了,在我看来项目是基本,有些公司看项目经历很重要,基础也固然重要) see you

总结:人生第一次面试,收获很大,自己欠缺很多,首先自我介绍要熟练、简练、抓重点,基础和框架方面,该加把劲了,多实践,不要停

  • 2020.3.3
    -阿里猫人电商

1、自我介绍(这次稍微准备了下,感觉说的还好,不过还是有点紧张,声音会抖,自己也太菜了吧!!)

2介绍一下你的项目 + 项目中你觉得比较难的点、你是怎么想的 / 怎么解决的(阿里基本面试流程get,不过这次做了点准备,难的点大致还是并发问题,不过我还不知道怎么解决,比如100个人同时抢单问题,涉及多线程,答不上来)

3Hashmap底层实现,怎么解决hash冲突(链地址法)
HashMap基于hashing原理,我们通过put()和get()方法储存和获取对象。当我们将键值对传递给put()方法时,它调用键对象的hashCode()方法来计算hashcode,让后找到bucket位置来储存值对象。当获取对象时,通过键对象的equals()方法找到正确的键值对,然后返回值对象。HashMap使用LinkedList来解决碰撞问题,当发生碰撞了,对象将会储存在LinkedList的下一个节点中。 HashMap在每个LinkedList节点中储存键值对对象。

4String为什么是不可变的,StringBuilder,StringBuffer的区别
(因为string源码中是用final修饰的,进行大量计算是比较安全,感觉是胡扯哈哈哈哈)
String的值是不可变的,这就导致每次对String的操作都会生成新的String对象,这样不仅效率低下,而且大量浪费有限的内存空间,让我们看一下String的源码:
在这里插入图片描述
从源码来看, String类内部是用char数组来保存字符串的值, 并且char[]是final的, 这里的final意味着什么呢?
1、value必须在构造时为其赋值
2、赋值后value的引用不能再变
当我们实例化一个String对象并得到其引用后, 构造已经结束了, 即value的引用已经不能再变了
那么value的值呢, 理论上是可以改变的, 只要我们拿到value的引用, 可以直接通过下标改变他的值
实际上呢?
value的值我们从String外部获取不到
(1)首先, 构造的时候我们传入String的值, String内部赋值给value字段的时候都经过copy, 也就是说我们传给String的值经过构造后已经有了一份我们获取不到的备份留在了String内部, 我们改变原来的值对String内部的value已经毫无影响
在这里插入图片描述
毫无疑问, 两次的输出都是h
(2)其次, String类没有提供对外的接口来改变value的值, 通过查看String类源码可以看到, String类所有的公开方法中, 没有一个可以修改value的值.

真的不可变吗?
在这里插入图片描述
利用反射我们可以直接获取类内部的属性, 挣脱了访问权限的束缚,获取了String内部的value数组, 改变了String的值
三者的区别:
在这里插入图片描述
(1)如果要操作少量的数据用 String;
(2)多线程操作字符串缓冲区下操作大量数据 StringBuffer;
(3)单线程操作字符串缓冲区下操作大量数据 StringBuilder
在这里插入图片描述
这个知识点转载https://blog.csdn.net/weixin_41101173/article/details/79677982,感谢整理和分享!

5线程,多线程,线程池相关知识:对synchronized与Lock的区别与使用
(讲了个大概,但是具体细节不熟悉,待更加熟悉)
详细可看这个大神总结的:https://blog.csdn.net/u012403290/article/details/64910926

6对设计模式了解吗?
(忘光了,。。。不了解)

7对JVM了解吗?给你一个类,程序执行以后它会怎么样,或者是在哪里生成对象~~ Java栈里存放了什么东西?
(堆中产生对象,这个大致可以回答上来巴拉巴拉)
Java栈(Stack):java栈总是和线程关联在一起,每当创建一个线程时,jvm就会为这个线程创建一个对应的java栈。在这个Java栈中又会包含多个帧栈,每运行一个方法就创建一个帧栈,由于存储局部变量,操作栈,方法返回值等。每一个方法从调用直至执行完成的过程,就对应一个帧栈在Java栈中入栈和出栈的过程。所以java栈是私有。

8有什么想问我的吗?(巴拉巴拉) see you!

总结:多去熟悉框架,了解清楚项目,要会描述,抓技术点,巩固Java基础。
发布了3 篇原创文章 · 获赞 2 · 访问量 56

猜你喜欢

转载自blog.csdn.net/qq_41065910/article/details/104639170