面试

HashMap面试题汇总(附2020年最新大厂面试题、答案)

南楼画角 提交于 2020-12-17 15:48:10
1,HashMap底层存储结构 HashMap在Jdk1.7的时候采用的是数组加链表的数据结构,jdk1.8之后采用了数组加链表加红黑树的数据结构。观察源码可知HashMap类中有一个非常重要的字段就是Node[] table,即哈希桶数组。而Node是HashMap的一个内部类,实现了Map.Entry接口,本身就是一个键值对。 2,解决Hash冲突的方法,HashMap采用了什么方法解决Hash冲突? HashMap使用哈希表来存储数据的,当然哈希表不可避免的就会遇到hash冲突问题,解决hash冲突的方法大致有两种:1,开放地址法。2,链地址法。 1,开放地址法:当地址发生冲突时,按着某种方法继续探测哈希表中的其他存储单元,直到找到空位置为止。 2,链地址法:链地址法就是数组加链表的结合,在每一个数组元素上都有一个链表结构,当地址发生冲突时就讲数据存放在链表中。 而HashMap就是采用链地址法进行解决hash冲突的。 3,jdk1.8的HashMap中的链表达到多少个时会生成红黑树? HashMap用链地址法解决hash冲突,则当链表里的长度太长就会严重影响HashMap的性能。于是在jdk1.8里,对数据结构做了进一步优化,引入了红黑树,当链表长度大于8的时候,链表就会转成红黑树,利用红黑树快速增删改查的特点提高HashMap的性能,其中会用到红黑树的插入、删除

腾讯PCG(后台开发) 校招

浪子不回头ぞ 提交于 2020-12-17 15:39:56
电话面试 1. muduo网络库 定时器的实现 (set,顺便将了一下 runinloop函数) 2. read recv 函数区别 返回值为0 表示什么 3. tcp三次握手 为什么是三次不是二次 ? 四次挥手为什么是四次不是三次? 4. 闲聊 腾讯视频面试 作为一个小渣渣记录一下,腾是我一直想进的公司,但其实准备的时间不是很长,也不是科班还是存在很大的劣势,记录一下找工作的经历。 首先说一下,这是我第一次视频面试,还是蛮紧张的。不过面试官真的超好,不知道是不是因为我一面的面试官是个小姐姐的原因。 一面: 1.二分查找算法,有重复的值,返回最左边的索引,不存在返回-1。这是我写的代码,面试官指出找到的时候while循环那里存在问题,那里也可以继续二分查找。 #include <iostream>#include <vector> #include <algorithm> using namespace std; int BinarySearch(vector<int>& nums,int ojb); int main() { vector<int> eg1{1,2,2,3,3,4,5,7}; cout<<endl; cout<<BinarySearch(eg1,1)<<endl; cout<<BinarySearch(eg1,2)<<endl; cout<

阿里秋招内推1.2.3面面经(Java后台)

女生的网名这么多〃 提交于 2020-12-17 15:35:34
【每日一语】生活并没有那么复杂,要是你喜欢,大可以说我是在探索生命。——《本杰明•巴顿奇事》 offer已经算是有了,回馈牛客,在牛客网上我也学习到了很多大家分享出来的东西,是时候把自己秋招的面经分享出来积累人品了,最近在做一个人生中最重要的决定,希望结果是好的,攒人品!攒人品!攒人品!重要的话要说三遍!!! 一面,全程一个小时左右: 一上来先说自己实习做的项目,然后面试官开始问项目细节,然后又开始说学校里做的项目,这两个加起来就快四十分钟了,因为每个人项目不一样就不介绍跟项目关系太大的,说几个通用型问题1:为什么你的缓存更新策略是先更新数据库后删除缓存,讲讲其他的情况有什么问题 2:两个线程打印 1.2.3.4 打印到100怎么实现,这里刚开始说的是加锁用生产者消费者来做,后来说了semaphore,感觉后面的才是面试官想要的答案。 3:spring的aop的实现方式,aspectj和jdk动态代理,cglib动态代理,讲了下实现的原理 4:hashmap实现原理,把知道的都说出来。 二面,在周二,也是一个多小时,一来还是说的实习项目,然后直接问问题 1.缓存的使用策略和从底层数据库开始往上各个层级中缓存的使用,把你知道的都说出来,这个问题刚开始有点懵逼,后来就从数据库底层原理开始说起,然后讲了缓存的各种使用策略,和这些策略避免的什么问题,这里讲了好久,边说边被追问

阿里技术开发(java)一面面经

余生颓废 提交于 2020-12-17 15:27:21
链接: https://www.nowcoder.com/discuss/89653 目录 1、你比较了解的机器学习的算法有哪些,说一下这些算法的过程和区别(因为一开始就跟他坦白说了自己的情况,面试官还是很nice的,从你熟悉的东西入手) 2、网络的体系结构分为哪五层,每层分别有哪些协议 3、TCP和UDP的区别是什么,如果想发送即时消息应该用哪种协议 4、TCP的连接建立和断开的过程(三次握手和四次挥手),如何保证TCP发送的信息是正确的,且保证其先后顺序不被篡改 5、对HTTP协议了解多少,HTTP和HTTPS有什么区别,HTTPS的安全性是怎么实现的 6、平时用mysql用什么引擎 7、数据库事务的特性有哪些 8、事务并发可能会导致哪些问题,数据库的隔离级别有哪些,mysql默认的是哪种级别,这种默认的隔离级别能够避免哪些问题(复习的太久了,有一些忘记了,这个问题居然答得不全) 9、如何判断SQL查询操作是不是慢sql,如何优化 10、进程和线程的区别,进程之间的通信方法 11、死锁是什么,处理死锁的方法有哪些 12、进程同步中的临界区有什么处理方法 13、Tomcat了解吗?linux中的命令了解哪些 14、java线程编程了解吗 15、hashmap的数据结构是什么,具体是怎么实现的,是不是线程安全的(不是),那么它的线程安全的替代有哪些 16、java有多继承吗?(没有

十年电商大厂面试官总结100道大厂高频面试题:Dubbo,ElasticSearch,JVM,多线程/高并发,消息中间件

江枫思渺然 提交于 2020-12-17 15:26:29
从业十多年,我从一位向往大厂的面试者成为了一个大厂面试官,身边很多从事Java 开发的朋友都不时咨询如何才能进大厂。的确,进大厂对于大多数人来说,绝不只是谈资,而是一种技术追求。像阿里、腾讯、字节这样的大厂,技术氛围和技术规范都明显优于体量较小的公司,业务场景也更加丰富、更具挑战性。 在大厂锻炼几年,可以更好地提升个人能力,对以后的职业规划也有更多选择。 话虽如此,要拿到大厂offer并不容易。简历投递如同大浪淘沙,面试过程也是竞争激烈。特殊时期大厂需求降低,要求反而更高。没有十足准备,很难通过层层筛选。不少Java人的问题并不是技术功底不过关,而是没有形成系统、全面的知识体系,总是被面试官问得哑口无言。 结合自己多年电商大厂面试官的经历,我将这些年常问的知识点从头梳理,整理成100道电商大厂核心面试题,涵盖了 大厂必考点、高频点和涨薪点 ,相信对大家准备面试会有一定帮助,也能解决一部分开发人在日常项目中遇到的问题。 这些点一共分成 5 大类,分别是: Dubbo,ElasticSearch,JVM,多线程/高并发,消息中间件 。我把关于这些问题的拆解与思考,整理成一个 pdf,限于篇幅,这里就不一一列出了。需要的同学可以文末领取,希望能从中有所启发、收获。 这里先罗列出近三年部分技术考核点,具体有: 1 Dubbo 1.1 服务调用超时问题怎么解决? 1.2

iOS根据图片比例计算显示大小

青春壹個敷衍的年華 提交于 2020-12-17 13:30:40
前言 iOS开发中,很多地方使用到图片浏览,这时候就可能需要旋转屏幕查看图片,下面分享一种计算图片旋转大小的方法,在此抛砖引玉。 作为一个开发者,有一个学习的氛围跟一个交流圈子特别重要,这是一个我的iOS交流群: 196800191 ,加群密码:112233,不管你是小白还是大牛欢迎入驻 ,分享BAT,阿里面试题、面试经验,讨论技术, 大家一起交流学习成长! 代码 func calculationFrame(image: UIImage) -> CGRect { var x: CGFloat = 0 var y: CGFloat = 0 var width: CGFloat = 0 var height: CGFloat = 0 var screenWidth: CGFloat var screenHeight: CGFloat if #available(iOS 11.0, *) { screenWidth = UIScreen.main.bounds.size.width - self.view.safeAreaInsets.left - self.view.safeAreaInsets.right } else { screenWidth = UIScreen.main.bounds.size.width } if #available(iOS 11.0, *) {

为什么大厂面试,都喜欢考算法?

妖精的绣舞 提交于 2020-12-17 12:00:35
“ 语言只是工 具,而算法才是程序的灵魂 。”这句话,我估计你已经听到过无数次。 可一旦具体到日常工作中,我们还是会遇到各类的 「困扰」 : 像数据结构和算法这种脱离实际工作的知识,是不是除了面试,这辈子也用不着?那还有学的必要吗? 哪怕不懂算法,只要把 Java API、开发框架用得熟练,同样能让代码“飞”起来,为什么还要花精力去学? 先不急着解答你的问题,我先问你, 作为一名开发工程师,你真的愿意做一辈子的 「CRUD boy 」 ? 大部分程序员整天都在重复「增删改查」,哪怕是在所谓的“业务开发”中,也只不过是利用已经封装好的现成的接口、类库来堆砌或者翻译业务逻辑。 确实,这很少能用到数据结构或者算法之类的知识。 但是, 不需要自己实现,并不代表什么都不需要了解和掌握! 举个例子,假如你不懂这些类库背后的原理,不懂时间、空间复杂度分析,那又何谈能用好、用对?存储某个业务数据时,又怎么选择用 ArrayList,还是 LinkedList ?调用了某个函数后,又该如何去评估代码的性能和资源的消耗? 清醒一点, 初级程序员才比招式,高级程序员只看内功。 仅仅是一个简单的 ArrayList或Linked List 的选择,就可能带来成千上万倍的性能差别。 这时候,数据结构和算法的价值就完全凸显出来。只要你理解背后的数据结构,可以迅速看出这些类的本质区别。届时根本用不上死记硬背

致考研!谈谈我是如何考上北大的

∥☆過路亽.° 提交于 2020-12-17 10:54:27
致考研!谈谈我是如何考上北大的 点击上方“ AI有道 ”,选择“置顶”公众号 重磅干货,第一时间送达 图:北大未名湖畔 明天就是 2019 年全国硕士研究生入学考试的日子了。许久没有关注考研信息,今天颇有感慨,想跟大家谈一谈我的考研之路。我将分几个方面来说,可能比较琐碎,但都是我的真实经历,希望能给你一些经验和心得。 很多读者朋友通过博客、知乎、微信公众号认识我,看我的文章,但是可能对我也并不了解。我是 2012 年考入北大硕士的,2015 年顺利毕业,现在主要从事机器学习、深度学习相关领域的研究和工作。 好了,正文开始! 1. 为什么考研? 这是一个很多在大学阶段考研之前大家都会想的一个问题,我也不例外。我本科就读于一所 211 高校。其实,对于是否考研这个问题,我从入学开始就比较确定的,一定会考研。因为我觉得高考并没有发挥正常,心里总有一个名校梦,当时就给自己设定了要考研、继续深造的志愿。应该说,我是学习型的,虽然刚入学的时候也想加入一些社团、学生会,但后来觉得用处不大,或者说自己也不适合,没有时间和精力。索性安心上课、自习,倒也轻松。不过,机缘巧合,也先后担任过班级的学委和班长,这方面对自己的锻炼也挺大的,收获了不少东西。 有的读者可能会问:既然刚开始就准备考研,那么肯定从大一就开始死学吧?对我而言其实不然。虽然我也始终把学习放在第一位,争取每个学年的奖学金

如何推动技术团队的成长

左心房为你撑大大i 提交于 2020-12-17 10:52:27
如何推动技术团队的成长 什么是管理 个人理解为:调配所能支配的所有资源,最高效最高质量的完成目标。 管理事项包含 人:选人、育人、淘汰、晋升等,人是团队的基础,也是一个好的团队的核心要素。 事:团队组建的目的,是为了完成目标的完成,主要包含两件事情,业务支撑和团队基建。 文化:文化是组织发展的核心内容,是推动个人成长、团队成长的动力引擎。 影响力:影响力是领导者的必备能力,包含对内影响力、对外影响力。影响力的塑造,可作为团队发展的第二动力引擎,侧面推动团队的成长。 人 选人 常规选人的两种方式:内部选拔和外部招聘,所偏向的重点不同。 内部选拔 价值观 利他精神 技术能力 业务经验 认知、思维 抗风险 外部招聘(经验的优质高潜,和具备经验的技术专家) 技术能力 业务深度 推动能力 沟通能力 好奇心 抗压 育人 用人长,补人短。关注团队成员的输入与输出。 可以通过以下方式进行团队培养: 1. 集体学习,团队共同制定目标,阶段完成学习任务目标。 2. 根据个人兴趣和优势方向,分别制定目标,定期进行团队分享。 3. 团队集体培训,可以采用引入外部讲师或定时集体学习直播课视频课等形式。 常规的几种团队学习成长方式,也可以交叉进行,最终的目的为提升团队成员岗位专业能力。 主动淘汰 关于主动汰劣,制定好目标、周期、标准后,跟踪过程。 过程中做好阶段性 Review,尽量避免过程中缺少沟通