青岛网站建设公司排名,珠海市网站建设企业,全国企业信用信息公开系统,阿里云商标注册官网一面1、自我介绍答#xff1a;自我介绍是面试中唯一的自己主动介绍自己的环节#xff0c;一定要好好把握好#xff0c;你数据结构学的号可以手撕一个红黑树你就说我数据结构掌握地很好#xff0c;反正就是要把自己的优势凸显出来#xff0c;比如自己对于java的知识较熟悉自我介绍是面试中唯一的自己主动介绍自己的环节一定要好好把握好你数据结构学的号可以手撕一个红黑树你就说我数据结构掌握地很好反正就是要把自己的优势凸显出来比如自己对于java的知识较熟悉我介绍完自己的本科经历以后我就说我是保送到本校继续读研究生然后最末尾会加上自己熟悉java然后面试官就会问java的一些东西2、项目介绍及其亮点答使劲吹...3、java的8种数据类型有哪些答感觉这个问题被问烂了int,short,long,float,double,byte,boolean,char;4、问了Integer缓存数据的范围答-128-1275、紧接着问了Object类有哪些方法答这个我有背过clone,getClass,toString,finalize,equals,hashCode,wait,notify,notifyALL。(不懂面试这个什么意思)6、问到这里然后拿出了一个题面试官有小纸条题目在上面String A 123; String B new String(123);问我生成了几个String对象答我说如果常量池中原来没有“123”那么就是生成了2个对象如果常量池中有“123”那么只要1个对象生成(面试官别他妈的问这种问题了)7、由于提到了wait,顺带问了wait和sleep有什么区别答wait的话会释放对象锁sleep的话不会释放的对象锁8、由于还提及了hashcode面试官接着问我hashcode用在哪里答这个我不假思索地说hashmap和ConcurrentMap这里我猜面试官肯定要继续问我这两个东西了。9、果不其然面试官说讲一讲hashmap?答hashmap我讲了hashmap的数据结构数组链表结构讲了hashmap的put,get,扩容的底层原理同时讲了hashmap在1.7与1.8中的区别put中引入了红黑树以及扩容的时候不同这些就讲了挺长时间最后我说了一句hashmap不是线程安全的。10、这里提及了hashMap是非线程安全的面试问我为啥不是线程安全的举几个例子答我说了在扩容的时候hashmap会可能产生环造成死循环hashmap在插入新的阶段的时候多个线程同时插入会把除了最后的那个线程的其它线程插入的结点丢失对于修改的时候多个线程修改对只保留最后的一个线程的修改结果扩容的时候会只保留最后一个线程的扩容后的那个数组从扩容修改增加说了一遍11、我本以为要接着问ConCurrentMap额出乎我的意料并没有问可能觉得我hashmap准备的很充分然后接着问了我JVM了解吗答我说了解12、让我说意思JVM的分为哪几块答方法区虚拟机栈本地方法栈堆程序计数器然后我就自己没等面试官问新的问题继续接着说方法区和堆是线程共享的虚拟机栈本地方法栈和程序计数器是线程私有的除了程序技术器不会发生内存溢出其它都会发生内存溢出并说了哪些会发生堆溢出哪些会发生栈溢出这里就是大家要学会自己吧啦吧啦地说一堆因为据我观察每个面试官面试每个是有一个固定时间的超过这个时间段就结束了所以只要面试官不打断你你就一顿说13、由于提及到了内存溢出面试官问我内存溢出和内存泄漏的区别答内存泄露我说就是一块申请了一块内存以后无法去释放掉这块内存丢失了这段内存的引用内存溢出就是申请的内存不够撑不起我们需要的内存14、这里问完我就去问了数据库4大特性是啥举个例子答原子性我说就是一个事务要么全部完成要么全部失败要么做要么不做一致性比如ab100,一个事务改变了a比如增加了a的值那么必须同时改变b保证在事务结束以后ab100依然成立这就是一致性持久性额就是修改完以后在数据库中生效是永久的隔离性我就是说对于A对B进行转账A没把这个交易完成的时候B是不知道A要给他转钱。15、数据的隔离级别有啥每个隔离级别举个例子答额(怎么都要举例子啊啊啊啊啊~)内心波澜脸上面无表情地说1.未提交读事务中发生了修改即使没有提交其它事务也是可见的举例子我就说对于一个数A原来50修改为100但是我还没有提交修改另一个事务看到这个修改而这个时候原事务发生了回滚这时候A还是50但是另一个事务看到的A是100这就是未提交读2.提交读就是说对于一个事务从开始直到提交之前所做的任何修改是其它事务不可见的举例就是对于一个数A原来是50然后提交修改成100这个时候另一个事务在A提交修改之前读取到了A是50刚读取完A就被修改成100了这个时候另一个事务再进行读取发现A就突然变成100了3.可重复读可重复读就是对于一个记录读取多次的记录是相同的举例就是对于一个数A读取的话一直是A前后两次读取到的A是一致的可串行化读就是说在并发情况下和串行化的读取的结果是一致的没有什么不同这个举例我就说不会发生脏读和幻读然后数据库这一块就过去了。16、接着问我计算机网络问了我7层有哪7层答物理层数据链路层网络层传输层会话层表示层应用层17、接着问了我TCP在哪层UDP在哪层HTTP在哪层答TPC和UDP在传输层然后HTTP问我在哪个层我一下有点忘了这个没答上来会去看了是在应用层。18、问到这里就结束了然后面试官问我有啥想问的我就问如何评价我的面试表现答因为一面都是问基础的知识面试官和我说我感觉你基础很扎实他直接和我说我这里的话是通过的不知道后面的面试官怎么问你然后我说了声谢谢就去酒店的一个会议厅等待二面二面一面过了没多久就立马通知二面了中途感觉有点饿了美团还挺人性话的在后面的桌子上放了一堆饼干忘了饼干的名字了总之特别好吃我吃了好几块。1、自我介绍2、项目介绍及其亮点介绍。然后问了我集合了解吗让我说话ArrayList和LinkedList的区别答ArrayList底层是数组LinkedList底层是链表ArrayLIst查找数据快LinkedList插入删除快3、继续问我linkedList可以用for循环遍历吗答能不用尽量不要用linkedList底层是链表它使用for进行遍历访问每一个元素都是从头开始访问然后直到找到这个元素比如说找第三个节点需要先找到第一个节点然后找到第二个节点继续找第4个节点不是从第三个节点开始找的还是从第一个节点开始所以非常的慢不推荐可以用迭代器进行遍历。4、介绍一下ConCurrenthashmap答我感觉是因为一面问了hashmap所以二面面试官可能是看见了面试记录额这块我非常熟这个我又讲了很长时间讲了ConCurrentHashMap的底层的分段锁的结构讲了ConCurrentHashmap的get源码get源码是没有使用锁的这里我把get源码背写了下来并给面试官讲了get源码在插入修改删除的多线程下是安全的然后讲了put操作remove,扩容操作然后讲了在1.7和1.8的区别引入了红黑树链表长度大于8转换成红黑树采用了CASsynchronized来保证并发安全吧啦吧啦又讲了挺长时间5、来看看这道题说着拿出来一个小纸条答这个纸条感觉每个面试官都是只有纸条所以尽可能地和周围的同学多交流有一定的肯可能他的面试官就你的面试官。题目让我自己手算a,b,c,d的值结果是a8, b5c7d35计算完我问他对不对他没勒我。。。6、然后问我单利模式了解不写一个单例模式答这个之前准备过我写了一个双重锁的单例模式。建议不要写这种单例模式或者直接把那几种都写出来7、接着问了我虚拟机了解吗介绍一些虚拟机的内存模型答这个之前也准备过这里要注意了虚拟机的内存模型和运行时的数据区域不是一回事虚拟机内存模型又叫JMM就是每个线程有自己的工作内存然后又一个主内存线程工作的时候都是在自己的工作内存中拷贝一个主内存的副本还说了JMM的happens before原则程序顺序原则锁原则线程中断原则传递性原则还有其他的没想起来就没说了。8、介绍一些你了解的垃圾回收算法答标记清除标记整理复制算法把每个算法是啥说了一遍9、问到这里问了我你知道SurvivorRatio这个参数为啥初始是默认的8:1:1吗答这个由于刚才刚问了垃圾回收算法我觉得可能有关联于是我说方便复制算法操作Eden区域大多数都是朝生夕死的这个比例可以方便复制算法的中from和to来回进行复制存活的对象额说完他没有说啥感觉是默许了吧10、突然又问二叉树了解吗写一个二叉树的深度搜索遍历答当时我听到中道题有点懵什么是二叉树的深度搜索遍历我只知道层次遍历前序后序中序遍历啊我想了想感觉和后序遍历挺像的我觉得应该就是后序遍历吧我就先写了个后序遍历的递归写法然后他看了一眼没说啥感觉这个面试官有点话少冷淡全程不和我互动emmmm....下来自己百度了下对的。。。这个代码问完我让后让我去等通知我感觉回答的还行果然没过几分钟通知我去三面三面1、照例自我介绍和项目介绍2、上来就让我手撕一个单例模式。。。答继续写我的双重锁模式3、让我讲了讲代码是啥啥意思答STEP 1. 线程A访问getInstance方法因为单例还没有实例化所以进入了锁定块。STEP 2. 线程B访问getInstance方法因为单例还没有实例化得以访问接下来代码块而接下来代码块已经被线程1锁定。STEP 3. 线程A进入下一判断因为单例还没有实例化所以进行单例实例化成功实例化后退出代码块解除锁定。STEP 4. 线程B进入接下来代码块锁定线程进入下一判断因为已经实例化退出代码块解除锁定。STEP 5. 线程A初始化并获取到了单例实例并返回线程B获取了在线程A中初始化的单例。大体是这么回事。5、由于我的项目中提及到JVM所以给我出了一个场景题垃圾会收器中标记清除多次后由于采用的是标记清除算法那么你觉得可能会出现什么问题答然后我说由于产生了内存碎片所以当分配一个大对象的时候由于内存不连续那么会产生full GC;6、这里提及到了full gc,问我哪些情况会产生full GC,哪些情况产生minor GC?答minor会产生在eden区满了fullGC产生在老年代的剩余空间不足以及永久代内存不足也会发生fullGC。7、除了你项目中的内存溢出问题你还知道哪些关于内存溢出内存泄漏的答这里之前了解过ThreadLocal,我说ThreadLocal中的键值对中的键是一个弱引用那么在内存回收的时候这个键很可能会被回收掉然后键没了就无法找到value的值造成了内存泄漏8、然后给我出了一个动态规划的手写代码题说来写个代码吧大体是在n*m的矩阵方格中找一个最大的正方形是几乘几的有点忘了答由于没有准备过动态规划的题目这个题目看到我只说了暴力解决的方法然后面试官提示让我用动态规划做我想了半天没想出来。。。。当时感觉应该是凉了。。。时间差不多的时候面试官说就到这里吧然后让我出去等通知果然通知我今天面试结束了整整一个下午特别特别累前两面结束的时候感觉特别稳没想到最后还是因为手写代码这一块不会动态规划挂掉了当时感觉心态有点崩。。。自己整理的一套Spring进阶学习脑图如果觉得适合自己可以点击原图下载。