震惊 | 某公司实习生跑路,竟为了学习偷盗面试题

 2023-09-18 阅读 17 评论 0

摘要:❝小小作为一个非著名博主,于近日跑路,一份面试题即将呈现。❞跑路场景跑路分为两个部分,分别是离京,和被迫进京。离京离京当天是半夜了,在半夜的时候到达自己的老窝。这是一条相当漫长的路。进京令人忧伤的是,进北京的时候࿰

小小作为一个非著名博主,于近日跑路,一份面试题即将呈现。

跑路场景

跑路分为两个部分,分别是离京,和被迫进京。

离京

离京当天是半夜了,在半夜的时候到达自己的老窝。这是一条相当漫长的路。

进京

令人忧伤的是,进北京的时候,也是这样,做在了第二节车厢。小小望着窗外黑洞洞的一切,相当的无语。

回家

这是小小家门前的大楼。

拍照技术尚可,不过一般般。

总结

怀着忧伤的心情,在家呆了三天,垂头丧气的跑了回来。

面试现场

面试官:听说你上次还差一点点,再看数才及格,但是我感觉你表现还是可以的,这次破例再来面试一遍。小小:大多数人还是比较喜欢看再看的,相当感谢面试官给予一次再次面试的机会。面试官:谈一谈你对Java面向对象的理解。小小:面向对象的核心是封装,继承,多态。面试官:继续深入 小小:封装是把现实对象封装成为一个JavaBean。继承是使用extends关键字,对另外一个对象的属性和方法进行继承。多态是,设计一个接口,有多个实现这个接口的方法。面试官:你是不是忘了一个?是不是还有一个抽象。小小:嗯嗯,是的,还有一个抽象。抽象是把一堆类的公有的属性和方法抽取出来,作为抽象类的一部分。面试官:Java集合你用过吗?小小:Java集合用过,小小常用的List集合和Map集合。List集合前面定义的接口是List,Map集合前面的接口是Map。List集合底层是数组和链表,Map集合是使用Key和Value。面试官:HashMap你用过吗?小小:HashMap用过,这里简单使用了一下HashMap 面试官:HashMap底层是什么?小小:HashMap底层是一种数组+链表的数据结构,在put操作中,通过内部定义算法寻找到指定的下标,把数据放入数据元素中,若通过算法发现已有元素已在该元素中有元素,此时会产生hash冲突,链表的产生的意义在于解决掉hash冲突。面试官:讲一下hashMap的数据结构吧 小小:HashMap有三种数据结构,分别是数组,链表,哈希表。对于数组来说, 数组存储区间是连续的,占用内存严重,故空间复杂度大。但数组的二分查找时间复杂度小,为O(1);数组特点:寻址容易,插入和删除困难;链表:链表存储区间离散,占用内存比较宽松,故空间复杂度很小,但时间复杂度很大,达O(N)。链表特点:寻址困难,插入和删除容易。哈希表那么我们综合两者的特性,做出一种寻址容易,插入删除也容易的数据结构,这就是哈希表。哈希表((Hash table)既满足了数据的查找方便,同时不占用太多的内存空间,使用也十分方便。哈希表有多种不同的实现方法,HashMap则使用的是拉链法,也叫作【链地址法】;哈希表是由数组+链表组成的,一个长度为16的数组中,每个元素存储的是一个链表的头结点。那么这些元素是按照什么样的规则存储到数组中呢。一般情况是通过hash(key)%len获得,也就是元素的key的哈希值对数组长度取模得到。比如上述哈希表中:

 12%16=12,28%16=12,108%16=12,140%16=12

所以12、28、108以及140都存储在数组下标为12的位置。

面试官:HashMap源码你看过吗?小小:没有,一脸无辜(o´・ェ・`o) 面试官,滚!回家。

第二发面试

鉴于你的点赞数不错,这次嘛,作为资深的HR,本HR再次破例让你第二发面试。面试官:上一次不是说到了HashMap,HashMap源码你看了没?小小:我!看啦。(骄傲的举起双手) 面试官:你既然已经看过源码了,那我问你,HashMap线程安全吗?小小:安全!面试官:(阴沉着脸)你到底看了没, 小小:(委屈状)我看了。。。。。。面试官:好吧,你回家百度一下,HashMap到底线程安全不安全。

第三发面试

鉴于你阅读量,和联合出版社送书的活动都不错,所以呢,所以破例破例破例给你最后最后最后一次面试。面试官:上一次说了,HashMap线程安全吗?小小:不安全。面试官:(心里想)猜你回家也没看,我也不问那么仔细了。面试官:JVM你了解过吗?小小:JVM是一种运行在操作系统之上的,可以实现跨平台的运行。面试官:JVM内存划分讲一下吧。小小:我。。。。w(゚Д゚)w 小小:在桌子底下偷偷摸摸的拿出手机,谷歌一下:JVM的内存。眼睛瞟着手机, 小小:继续说道:JVM内存分为堆内存,方法区和栈三大部分,堆内存是最大的一部分,分为老年代和新生代,两大部分组成。年轻代内存被划分为三个部分分别为Eden空间、From Survivor空间、To Survivor空间,默认情况下年轻代按照8:1:1的比例来分配。面试官:我瞄的,早都看见你桌子底下的手机了,别以为我不知道你干啥了。面试官心里想。面试官:我继续问你,Java双亲委派机制你知道吗?小小:我。。。。只知道classLoader,和底层是C++编写。面试官:唉,扶不起来的阿斗,你回家了。

最后一发

小小继续坚持不懈,苦刷面试题,终于经过再三的投递简历,又一次的面试上了这家企业。面试官:什么是双亲委派呢?(我猜你回家没有看) 小小,切,这次本小小回家可看了,这就听我慢慢说来。小小:一个类的加载需要由其父类进行加载(够专业不!)所有的线程都有上下文,通过上下文的方式进行加载。(够牛逼不!) 面试官:没听懂。过 面试官:数据库你用过哪些?小小:数据库用过MySql,等一些。面试官:MySql索引你了解吗?小小:了解,数据库中的MySql中的索引用的是B+树,通过树的数据结构的方式实现。面试官:Spring 用过吗?小小:用过 面试官:最核心的是什么?小小:IOC和AOP 面试,那就介绍一下IOC和AOP 小小:IOC是有一个容器,把原先new的过程由程序员代new变成容器代new。AOP是通过注解,实现依赖注入。面试官:MyBatis用过吧,源码,看过吧。小小:看过 面试官:问你个问题,MyBatis接口函数可以随意重载吗?小小:不可以随意重载,因为mybatis里面将接口里面的方法名称和配置文件里面的id属性进行唯一配对,在同一个命名空间下只能有一个id,那么所有函数名称相同的重载函数都会被绑定到一个id上,所以,如果要实现函数的重载,必须让一个SQL语句去适应多个函数的参数,如果是单纯的重载是肯定不行的(重载函数的定义就是参数相关),但是得益于mybatis的多种传参方式和隐性的分页功能,可以在接口里面进行函数重载,但是还是需要将所有的重载函数适配到同一个id的SQL上面去,仍然有很大的局限性,并不是可以随意的进行重载。

核心在于,如果重载会导致出现一对多的情况。

送书

小小本周送书啦。这次送的书是Java深度调试技术。

参与抽奖方式

老规矩,从留言区中选中奖者,按照点赞数选择,点赞数高着或者书,本次送书一本。

送的书籍

本次送的书为,各位尽快留言,将会在下周一的时候,送出本周的书。

小明菜市场

推荐阅读

● 警钟 | 还不会Spring Boot集成JWT,你可能错过了大厂的Office了

● 图例 | Java混合模式分析之火焰图实例

● 面试 | 从一个API缓存演化,详细了解Redis各项功能

● 理论 | 六种延迟队列的实现方案

● 实战 | Element UI 父子组件传值与事件绑定(逆向)

                         

 

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/2/74611.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息