Java 商汤面试

Posted callmewhat

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java 商汤面试相关的知识,希望对你有一定的参考价值。

大三找实习花了大概半个月的时间,最后选择了商汤,因为面试体验最好,从第一轮面试到拿到口头 offer 只用了两天,第二轮结束两个小时就发了,正式 offer 也仅用了两天,感觉效率很高,而且也算是一个不错的成长平台。

我面试的是 Java 后台开发,一共两轮技术面,整体难度适中,面试官很和蔼,而且在我不会的时候也很耐心地引导。

很多问题记不太清了,就尽量写吧。

第一轮

1.简述 Java 的核心特性封装、继承、多态,简单解释一下就可以,顺便解释了下 Java 反射。

 

2.简述重写和重载

3.HashMap 了解么,简述一下 HashMap 的实现原理。扯了一下散列表,再讲了一下散列表的常用冲突解决方法:1.开放寻址法(发生散列冲突后在散列表上再寻找一个空地址),有线性寻址(冲突的地址索引+1)、幂寻址(冲突的地址索引第一次+1的平方,第二次+2的平方...)、双重散列(用另一种 hash 函数求得索引地址);2.链表法,将冲突的 hash 值放在链表中。HashMap 就是用链表法解决冲突,在 JDK 1.8 以后,当冲突链表数大于 8 以后,将链表改为红黑树。

HashMap 底层是一个名为 Entry 的数组 + 链表的实现结构,因此 HashMap 由 key、value、hash、next 四个值组成。

 

4.HashSet 了解么,简述一下简述了集合的特征, HashSet 的底层跟 HashMap 一样。

 

5.你提到过 HashMap 是线程不安全的,那有哪些集合是线程安全的?(没答对)Vector 、HashTable、CurrentHashMap

 

6.protect 关键字简述了 public 、protect 、default(默认)、private 的区别。

 

7.Cookies 和 Session 的区别都是用来确定用户身份的, Cookies 是存放在客户端, Session 是存放在服务器端。

 

8.设计模式了解么(不了解)

9.线程之间通信了解么?锁、信号量、管程通信

 

10.生产者消费者模型具体怎么实现(当时问的好像不是这个,但我是这么答得:))

11.synchronized 了解么?具体实现有几种方式

简述了一下锁,但没讲出实现

 

12.线程有几种状态,他们是怎么互相转换的,如何实现他们之间的转换?开始状态(new),就绪状态(runnable),运行状态(running),阻塞状态(blocked),结束状态(dead),简单讲了下sleep() ,wait() ,notify() 。

 

13.线程池的种类以及参数没回答到点子上,面试官很耐心地提醒了蛮久,但还是没听懂:(

 

14.Redis 了解么?(不了解)

15.索引相关概念,然后引到 B+ 树

讲了点概念,讲了下 B 树和 B+ 树的区别

 

16.排序了解么,你会多少种排序时间复杂度 O(n方):冒泡、插入、选择

时间复杂度 O(nlogn):快排,归并,堆排序

线性时间复杂度:桶排序、基数排序、计数排序

详细问了快排和归并,包括最好最坏时间复杂度,实现等等

 

17.单链表和双向链表有什么区别?彩虹屁了一波双向链表,虽然修改的时间复杂度为常量级,但前驱节点双向链表可以直接找到,单链表还要遍历;双向链表在节点很大的时候多余空间可以不计

 

18.之前你说到 HashMap 链表节点大于 8 用红黑树,你了解么?提了下红黑树是平衡二叉查找树,以及红黑相间。他问我会写不,果断不会

 

第二轮

1.JVM 了解么,简单讲讲 Java 的内存机制吧简述了 堆、方法区、栈、PC、本地方法栈

 

2.讲一下 Java 的垃圾处理机制吧

讲了可达性分析算法、垃圾回收算法、新生代老生代什么的,后来他问我如何在代码层面优化 GC,不会。

 

3.讲一下乐观锁悲观锁吧

简述乐观锁和悲观锁,还有 CAS 算法和实现逻辑。还有 CAS 的弊端,还简述了幻读、脏读、不可重复读

 

4.Redis 了解么?(不了解)

以上是关于Java 商汤面试的主要内容,如果未能解决你的问题,请参考以下文章

商汤科技面试——深度学习

商汤科技面试/笔试

商汤科技面试总结

商汤科技面试——AI算法岗

商汤科技Java一面(2021.12.8)

身边都是强者,985硕士夹缝求生混饭吃,艰难面试java开发上岸