宁波旷世智源25软件工程师
面试时长:60分钟。
软件开发岗,未标注具体语言,基本是数据可视化为主,会用中间件。
自我介绍省略。
1)ArrayList 和 LinkedList 的区别及适用场景
2)HashMap 底层实现原理,扩容机制
- 初始化大小默认16,2倍扩容机制
- 负载因子0.75
- HashMap在JDK1.7中存储结构采用数组+链表。HashMap采取Entry数组来存储key-value,每一个键值对组成了一个Entry实体,Entry类实际上是一个单向的链表结构,它具有next指针,指向下一个Entry实体,以此来解决Hash冲突的问题。
- HashMap在JDK1.8中采用数组+链表+红黑树,当链表长度大于等于8,并且数组长度大于等于64的时候进行树化,如果数组长度不大于64,仅进行正常的数组扩容
3)HTTP 1.0/1.1/2.0 的主要区别
4)TCP 如何保证可靠传输
5)WebSocket 与 HTTP 的长连接区别
6)WebSocket 在数据可视化中的实际应用场景
7)FineBI 的部署和集成经验
8)Redis 数据类型及适用场景
- String(字符串):是Redis最基本的数据类型,可以存储任何类型的数据,比如整数、浮点数、二进制数据等,其特点是存储简单、支持各种类型的数据,适用于缓存、计数器、分布式锁等场景。
- List(列表):是一个按照插入顺序排序的字符串链表。可以在列表的两端插入和删除元素,支持对列表进行剪切和修剪操作,还支持对列表进行阻塞式读取操作,其特点是支持快速的增删操作、支持阻塞式读取操作,适用于队列、栈、消息队列等场景。
- Set(集合):是一个不重复的无序元素集合。支持添加、删除、查找、求交集、求并集等操作,适用于好友列表、投票、社交网络等场景。
- Hash(哈希):是一种类似于关联数组的数据结构,它由键值对组成。支持添加、删除、查找、求交集、求并集等操作,适用于存储对象的多个属性信息、存储用户信息等场景。
- Sorted Set(有序集合):是一种有序的集合,每个元素都有一个分数(score),可以根据分数来排序。支持添加、删除、查找、求交集、求并集等操作,其特点是支持按分数范围查找元素,适用于排行榜、积分排名、带权重的消息队列等场景。
- Zset 类型的底层数据结构是由压缩列表或跳表实现的:
- 如果有序集合的元素个数小于 128 个,并且每个元素的值小于 64 字节时,Redis 会使用压缩列表作为 Zset 类型的底层数据结构;
- 如果有序集合的元素不满足上面的条件,Redis 会使用跳表作为 Zset 类型的底层数据结构;
9)Redis 在数据可视化项目中的具体应用
10)Nginx 反向代理和负载均衡配置
11)前后端分离项目的部署配置
场景题:介绍一个数据可视化的项目,让进行技术选型,原因,考量,性能瓶颈和解决方案,架构设计思路。
















