面经详情

面试:Java。感觉上还是很不错的,面试题目都是常规的题目,告知通过了。
一面
  • Set不能存放重复元素,其底层是如何实现的HashSet 底层就是基于 HashMap 实现的。(HashSet 的源码非常非常少,
  • 因为除了 clone() 、writeObject()、readObject()是 HashSet 自己不得不实现之外,其他方法都是直接调用 HashMap 中的方法。当你把对象加入HashSet时,HashSet会先计算对象的hashcode值来判断对象加入的位置,同时也会与其他加入的对象的hashcode值作比较,
  • 如果没有相符的hashcode,HashSet会假设对象没有重复出现。
  • 但是
  • 如果发现有相同hashcode值的对象,这时会调用equals()方法来检查hashcode相等的对象是否真的相同。
  • 如果两者相同,HashSet就不会让加入操作成功。
二面
  • HashMap原理 JDK1.8 之前 HashMap 底层是 数组和链表 结合在一起使用也就是 链表散列。HashMap 通过 key 的 hashCode 经过扰动函数处理过后得到 hash 值,
  • 然后通过 (n - 1) & hash 判断当前元素存放的位置(这里的 n 指的是数组的长度),
  • 如果当前位置存在元素的话,就判断该元素与要存入的元素的 hash 值以及 key 是否相同,
  • 如果相同的话,直接覆盖,不相同就通过拉链法解决冲突。所谓扰动函数指的就是 HashMap 的 hash 方法。使用 hash 方法也就是扰动函数是为了防止一些实现比较差的 hashCode() 方法 换句话说使用扰动函数之后可以减少碰撞。

相关推荐

Yuanx
Java
未通过未通过
首先分享公司周围环境:         是在一个大厂区里面,附近全都是建筑工地,厂区里面有很多栋楼,但是基本每一栋楼的一层都是厂房,里面有运转各种各样的机器,嗡嗡声很大。并且很多楼就像学生宿舍那种,全部晾的衣服被褥什么的,可能就是这个厂区里面公司的集体宿舍。然后公司在六楼,只有货梯和楼梯可以上去,但是货梯旁边贴着不许人员使用,只能拉货。        公司在六楼,只能走楼梯!!!进去之后,(可能是)人事部门的人直接给你一份笔试题目,然后让你呆在一个房间里面答题,当然,包括手写代码,整个答题环节,除了几个面试者以外,没有任何人监督或者怎样。        包括选择,简答,程序,以及数据库题目。其他暂且不谈,谈论一下最让我气愤的程序题。两个题目,都很简单,冒泡排序以及二分查找,没有给任何的前置条件,就直接让写两个算法,所以我个人理解是写出核心思想就行。冒泡排序我直接定义一个数组,然后for(int i=0;ilse(if-else用来判断low和high的值,根据不同的条件进行不同的操作),没有其他的,怎么进行二分呢。然后我给他说,我把整个操作定义在一个binary()函数里面,然后再if-else里面递归调用这个函数,结果他不发言了。但是他的分数已经打了啊,所以他说,你这个基础很差啊,很差,今天的面试就到这里了吧。好嘞,得嘞,我正好要走,拜拜了您嘞!!!    一定不要去!公司里面氛围很压抑,整个公司里面安安静静,没有任何人讲话,然后也没有交流沟通什么的,公司里面的技术根本不懂技术,千万别去坑自己!!!...查看更多
2023-05-16 发布

进入微信小程序

前往微信小程序,查看更多结果

立即前往
看准网南航南航面试经验南航面试经验:面试:Java。感觉上还是很不错的,面试题目都是常规的题目,告知通过了。
正在招聘Java1 个岗位