范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

大厂面试别再问我Java八股文了

  面试现场
  面试官 :你好,我是面试官xxx,请问你是大彬吗?
  大彬 :面试官,您好,我是大彬
  面试官 :现在方便面试吗?
  大彬 :嗯嗯,可以的
  面试官 :那我们现在开始面试吧
  面试官 : 看你简历上写了熟悉集合相关内容,你了解Java的List吗?
  大彬 :嗯,List是一个接口,常见的实现类有ArrayList和LinkedList
  面试官 : 讲讲这两个实现类的区别?
  独白:老八股文了哈哈
  大彬 :ArrayList的底层数据结构是数组,支持下标访问,查询数据快。默认初始值大小为10,容量不足时会进行扩容
  大彬 :而LinkedList的底层数据结构是链表,将元素添加到链表的末尾,无需扩容
  面试官 : 嗯嗯,刚刚你提到ArrayList的扩容,详细讲讲?
  独白:好家伙,就知道你会问这个,八股文都已经准备好了。
  大彬 :ArrayList扩容源码实现如下: public boolean add(E e) {     ensureCapacityInternal(size + 1);  //扩容     elementData[size++] = e;     return true; }  private void ensureCapacityInternal(int minCapacity) {     if (elementData == DEFAULTCAPACITY_EMPTY_ELEMENTDATA) {         minCapacity = Math.max(DEFAULT_CAPACITY, minCapacity);     }     ensureExplicitCapacity(minCapacity); }  private void ensureExplicitCapacity(int minCapacity) {     modCount++;     // overflow-conscious code     if (minCapacity - elementData.length > 0)         grow(minCapacity); }  private void grow(int minCapacity) {     // overflow-conscious code     int oldCapacity = elementData.length;     int newCapacity = oldCapacity + (oldCapacity >> 1);     if (newCapacity - minCapacity < 0)         newCapacity = minCapacity;     if (newCapacity - MAX_ARRAY_SIZE > 0)         newCapacity = hugeCapacity(minCapacity);     // minCapacity is usually close to size, so this is a win:     elementData = Arrays.copyOf(elementData, newCapacity); }
  大彬 :可以看到,在grow方法里面进行扩容,将数组容量扩大为原来的1.5倍。
  大彬 :举个例子,如果初始化的值是8,当添加第9个元素的时候,发现数组空间不够,就会进行扩容,扩容之后容量为12。
  大彬 :扩容之后,会调用Arrays.copyOf()方法对数组进行拷贝。
  面试官 : 嗯,不错,那ArrayList和LinkedList分别适用于什么场景?
  大彬 :对于随机index访问的get和set方法,ArrayList的速度要优于LinkedList。因为ArrayList直接通过数组下标直接找到元素;LinkedList要移动指针遍历每个元素直到找到为止。
  大彬 :新增和删除元素,LinkedList的速度要优于ArrayList。因为ArrayList在新增和删除元素时,可能扩容和复制数组;而LinkedList的新增和删除操作只需要修改指针即可。
  大彬 :因此,ArrayList适用于查询多,增删少的场景。而LinkedList适用于查询少,增删多的场景
  面试官 : 讲讲Set和List的区别?
  大彬 :List 以索引来存取元素,有序的,元素是允许重复的,可以插入多个null;Set 不能存放重复元素,无序的,只允许插入一个null。
  大彬 :List 底层实现有数组、链表两种方式;Set 基于 Map 实现,Set 里的元素值就是 Map的键值。
  面试官 : 了解Vector吗?
  大彬 :嗯,Vector是底层结构是数组,现在基本没有使用Vector了,因为操作Vector效率比较低。相对于ArrayList,它是线程安全的,在扩容的时候容量扩展为原来的2倍。
  面试官 : 嗯,那你还知道有哪些线程安全的List吗?
  大彬 :可以使用Collections.synchronizedList()方法返回一个线程安全的List。
  大彬 :还有另一种方式,使用CopyOnWriteArrayList。
  面试官 : 嗯哼,刚刚你提到CopyOnWriteArrayList,详细讲讲它的原理?
  独白:这也太卷了吧,一言不合就是底层原理...
  大彬 :CopyOnWriteArrayList是一个线程安全的List,底层是通过复制数组的方式来实现的。
  大彬 :所谓的CopyOnWrite,就是写时复制。
  大彬 :当我们往容器添加元素时,不直接往容器添加,而是先将当前容器进行复制,复制出一个新的容器,然后往新的容器添加元素,添加完元素之后,再将原容器的引用指向新容器。
  大彬 :这样做的好处就是可以对CopyOnWrite容器进行并发的读而不需要加锁,因为当前容器不会被修改。 public boolean add(E e) {     final ReentrantLock lock = this.lock;     lock.lock(); //add方法需要加锁     try {         Object[] elements = getArray();         int len = elements.length;         Object[] newElements = Arrays.copyOf(elements, len + 1); //复制新数组         newElements[len] = e;         setArray(newElements); //原容器的引用指向新容器         return true;     } finally {         lock.unlock();     } }
  面试官 : 那你能说说CopyOnWriteArrayList有什么缺点吗?
  大彬 :主要有以下两个问题。
  大彬 :内存占用问题。由于CopyOnWrite的写时复制机制,在进行写操作的时候,内存里会同时驻扎两个对象的内存。
  大彬 :CopyOnWrite容器不能保证数据的实时一致性,可能读取到旧数据。
  面试官 :嗯,可以。
  面试官 : 问一些平时开发经常遇到的问题,怎么给List排序呢?
  大彬 :可以使用list自身的sort方法,或者使用Collections.sort(list)方法。
  面试官 : 怎么在遍历 ArrayList 时移除一个元素?
  大彬 :如果使用foreach删除元素的话,会导致快速失败(fast-fail)问题,可以使用迭代器的 remove() 方法,避免fast-fail问题。 Iterator itr = list.iterator(); while(itr.hasNext()) {       if(itr.next().equals("dabin") {         itr.remove();       } }
  面试官 :基础还不错!回去等通知
  大彬 :好的,谢谢你
  独白:回去等通知?不会凉了吧...

果粉都买早了!iPhone14ProMax渲染图提前剧透,这次亮点十足从iPhoneX到iPhone13,苹果一直都用着刘海屏的外观设计,而随着华为被制裁后,国内的高端市场也被苹果收入囊中,所以可以看到iPhone13系列热度持续高涨,帮忙苹果拿下了东数西算板块,你买对了吗?2月21日,市场中简直是冰火两重天,美团阿里腾讯等互联网公司凉的不要不要的,甚至于宁德时代东方财富等市场关注度非常高的股票也一样大跌。东数西算板块却几乎涨停,是另一番美景。就是这样美团外卖每单利润仅两毛钱,外卖平台困局何解?2月18日,国家发改委等部门印发关于促进服务业领域困难行业恢复发展的若干政策的通知,称将引导外卖等互联网平台企业进一步下调餐饮业商户服务费标准,降低相关餐饮企业经营成本。一直以来,欧洲为什么出不了大型互联网公司?欧洲为什么出不了大型互联网公司?前几天和朋友聊天,无意间聊到了这个话题,欧洲经济发达,是第一次和第二次工业革命的发源地,可到了如今的互联网时代里,却难觅欧洲大型互联网公司的身影。查Web3社交,会取代Web2社交吗?当前,在加密货币圈和元宇宙出圈的推动下,Web3的概念和理论正在迅速得到普及。Web3,也称Web3,一言以蔽之,Web3是互联网的下一个时代。Web3是一个对所有用户开放的互联网适用于搭建迷你主机的紧凑型90旋转弯头世界闻名的水冷制造商EKWB,正在拓展QuantumTorqu配件系列,推出MicroRotary接头配件,旨在为遭遇配件间距问题的迷你水冷电脑主机制造商或玩家提供服务。EKQua双模大动圈,降噪低延时南卡LitePro2无线耳机轻体验南卡LitePro2无线耳机外包装条采用乳白色配色设计,共有爵士白和星韵黑两款配色,外包装条背面列出该无线耳机的五大特点蓝牙5。2芯片AACAPTXENC双麦降噪13mm大动圈和双零事故!北京冬奥会网络安全保障水平超往届来源新华网北京日报20日晚,北京冬奥会随着冬奥火炬的熄灭落下帷幕。作为奥运会历史上首家第三方网络安全服务商,奇安信以零事故交上了2022年北京冬奥会的网络安保答卷,并首创了融合供应聊聊rocketmqstreams的ILeaseService序本文主要研究一下rocketmqstreams的ILeaseServiceILeaseService通过db实现租约和锁,可以更轻量级,减少其他中间件的依赖使用主备场景,只有一个荣耀悄悄发布新机,十亿色曲面屏120Hz6400万像素,仅售2199元声明原创不易,禁止搬运,违者必究!二千档位的手机,能买到怎样一款手机?其实现在的手机市场内卷还是非常严重的,中低端手机产品中,还是有很多不错的产品,不管是在性能的体现上,还是在其他帮苹果抢夺大陆市场?专家华为的教训忘了吗?点击关注,每天精彩不断!导读每月提供50吨稀土,帮苹果抢夺大陆市场?专家华为的教训忘了吗?众所周知,现在科技市场上的竞争是十分激烈的,为了能赢得更多的市场份额,苹果华为小米OPPO
加进品牌线上营销数字营销的四大模型,你知道吗?1数字化品牌建设消费品公司或其他营销团队通常专注于建立和更新品牌资产并加深与消费者的互动。他们将营销成本从传统的线性广告转变为沉浸式数字多媒体体验,并建立了与消费者联系的新方法。他品牌线上营销混战,夹缝生存的品牌该要怎么做?最近日常霸占各大热搜排行榜的腾讯和爱奇艺(下面简称腾讯为鹅爱奇艺为桃),抓住了不少吃瓜群众的眼球。今年鹅推出的创造营2021桃推出的青春有你3,与其说是大岛男孩与大厂男孩的batt德发长同盛祥十一推出便民服务点游客人海中排队品尝西安美食陕西省西安市作为全国著名的旅游城市之一,在十一黄金周期间吸引了大量游客前来游玩。西安回民街是所有游客来到西安必去的目的地之一,在西安钟楼通往鼓楼,去回民街的必经之路上人山人海。两家西安白鹿原上又多了一个古镇喜欢古建筑的一定要去看位于西安城区仅有十多公里的白鹿原历史悠久山清水秀物产丰富,有不少值得一去的地方。最近几日西安天气晴朗,我们慕名去了白鹿原上一个新建的白鹿古镇走走看看。一走进白鹿古镇景区,沿路步行,中国电信中国移动回归A股,会学中国联通混改员工持股吗?美国政府以安全为由,除了对华为等通信设备厂商进行打压之外,对于中国的基础电信运营商在美国的一些业务也做出了限制。特别是在资本市场也做出了更加粗暴蛮横的举措2021年新年伊始,美国纽华为拿下支付牌照,将与微信支付宝们在竞合中求发展根据天眼查披露,2021年3月25日,深圳市讯联智付网络有限公司(简称讯联智付)大股东正式从上海沃芮欧信息科技有限公司(简称上海沃芮欧)已变更为华为技术有限公司为股东(简称华为公司盘点几款新品手机的亮点,显微镜功能亮点最大智能手机发展到现在,在创新上主要是硬件能力的提升和软件处理能力提升两个方面。而这两方面的能力提升,又主要是集中在手机相机能力方面。因此,这些创新要得到比较广泛的认可是越来越难,有些微信关怀模式来了,为老人家配置一下吧昨天是国庆长假调休补班的日子,蛇叔在忙完事情之后,发现微信有新版本更新,更新的版本号是8。0。14(200028000E35)。除了例行一些bug修复之外,也没见有特别的新功能更新彬县张家三姐妹苹果丰收一起摘老三家10亩红富士收入7万元陕西盛产苹果,现在是苹果成熟的季节,去彬县途中经过一片果园,被枝头挂满的红苹果吸引。看到园中几位大姐在收苹果,便走进果园想拍两张丰收的苹果照片,看有人进入果园,大姐二话不说,拿两个大妈渴望旅游开发吸引孩子回家乡发展孤独的乡村守望者需要活力在中国传统村落程家川村,现在大部分人都搬离窑洞住进平房,但他们的房子都建在窑洞前面,窑洞还保留作为仓库使用。多年前,由于一些窑洞存在倒塌泥石流等危险,大部分人都新建了房屋居住。随着天冷吃火锅,盒马戏企鹅,这个企鹅是没有心的在蛇叔工作生活圈里,有两家盒马鲜生实体店,一家靠北,另一家靠南,两个方向,走过去距离上差不了多少。疫情之前还时不时会去逛一逛,主要不是买东西,而是看看鲜活的海产品,了解了解海鲜价,