好多人问的「好未来」面经来了!

教育   2024-12-18 08:33   北京  

欢迎点击下方👇关注我,记得星标哟~

文末会有重磅福利赠送


今天分享的是粉丝投稿的在好未来的面经,跟项目相关的问题没有具体答案,其他的问题涉及到的知识点有MySQL、Redis、数据结构(切片)以及Go并发,感兴趣的可以接着往下看:

问项目

  1. 找你的一个项目,着重介绍下你的或团队的技术特点
  2. K8S怎么用的?团队部署吗?是不是专门团队?
  3. 员工管理平台用redis 用k8s等部署 还是没做到实时一致性是吧?
  4. 你那个性能提升50%的业绩是怎么出来的
  5. 你的这些项目是不是频繁做一些API 开发
  6. ES用过没

数据库

1. MySQL与Redis的数据结构

  • MySQL 是一种关系型数据库管理系统(RDBMS),它使用表格来存储数据,每个表由行和列组成。在MySQL内部,为了高效地管理和访问数据,它使用了多种索引结构,如B树、B+树、哈希索引等。

  • Redis 是一种非关系型数据库,更具体地说,它是一个键值对存储系统。Redis支持五种基本数据结构:

    • String(字符串): 可以是简单的字符串或者整数/浮点数值,也支持二进制安全的字符串。
    • Hash(哈希): 类似于其他编程语言中的哈希表或字典,允许你存储对象属性。
    • List(列表): 双向链表,可以用来实现队列或栈。
    • Set(集合): 无序且元素唯一的集合,支持交集、并集、差集等操作。
    • Sorted Set(有序集合): 带有分数(score)的集合,可以根据分数排序。

2. MySQL与Redis的使用场景

  • MySQL 通常用于需要复杂查询、事务处理和持久化存储的应用场景。例如,它是电子商务网站、博客平台和社交网络中用户信息、订单记录等数据的常见选择。
  • Redis 更适合用于缓存、会话管理、实时分析、排行榜、消息队列等高性能需求的场景。例如,在高并发读写的秒杀活动、在线游戏的积分榜、分布式锁等方面表现优异。

3. 数据库索引与索引下推

  • 索引 是数据库中用于加速数据检索的技术。常见的索引类型包括B树、B+树、哈希索引等。索引可以显著提高查询效率,但也会增加写入成本。
  • 索引下推(Index Condition Pushdown, ICP) 是一种优化技术,允许数据库在扫描索引时就过滤掉不符合条件的记录,而不是先从磁盘加载所有可能匹配的行到内存再进行筛选。这减少了I/O操作,提高了查询性能。

4. B+树为什么通常是三层

  • B+树 是一种平衡树,广泛应用于数据库和文件系统的索引结构。B+树的设计目的是最小化磁盘I/O次数。理论上,B+树的高度决定了查找操作的最大I/O次数。对于大型数据库,为了确保大多数查询可以在较少的I/O次数内完成,B+树通常被设计为三到四层。三层的B+树意味着根节点、中间节点和叶子节点,这样的结构足以覆盖大量的数据条目,同时保持较高的查询效率。

数据结构

1. 切片(slice)的特点

  • 动态数组:切片是Go语言中的一种动态数组,其长度可以在运行时改变。
  • 引用类型:切片是指向底层数组的引用,因此多个切片可以共享同一个底层数组。
  • 容量(cap):除了长度(len)之外,切片还有一个容量属性,表示底层数组中可使用的最大元素数量。
  • 内置方法:Go提供了append()copy()等内置函数来操作切片。
  • 零值:切片的零值是nil,表示没有指向任何底层数组。

Go并发

1. 使用goroutine和channel的场景

  • goroutine 是Go语言中轻量级的线程,适用于执行独立的任务,尤其是在需要大量并发任务的情况下。例如,网络服务器处理客户端请求、爬虫抓取网页内容、批量处理文件等。
  • channel 用于goroutine之间的通信,可以同步数据传递并控制并发流程。例如,工作池模式、生产者-消费者模型、信号量控制并发数量等。

2. 捕获goroutine的参数

  • 返回结果:可以通过channel将goroutine的结果传递回主程序。
  • 上下文(context):使用context包可以在goroutine之间传递取消信号、超时信息和其他元数据。
  • panic恢复:使用deferrecover可以在goroutine发生panic时捕获错误并进行处理。

3. 通道有缓存和无缓存的区别

  • 无缓冲通道:发送方必须等待接收方准备好接收数据才能继续执行。这种机制可以实现同步通信,保证发送和接收的操作顺序。
  • 有缓冲通道:有一个固定的容量,发送方可以在不等待接收方的情况下将数据放入通道,直到达到容量上限。这种方式提供了异步通信的能力,但需要注意避免缓冲区满导致的阻塞问题。

早日上岸!

我们搞了一个免费的面试真题共享群,互通有无,一起刷题进步。

没准能让你能刷到自己意向公司的最新面试题呢。

感兴趣的朋友们可以加我微信:wangzhongyang1993,备注:面试群。

点击下方文章,看看他们是怎么找到好工作的!

Go就业陪跑训练营,辅导到就业为止!

Java就业陪跑训练营,辅导到就业为止!

我们又出成绩啦!大厂Offer集锦!遥遥领先!

王中阳
公司技术总监,创办就业陪跑服务,辅导学员拿到600多个offer。专注程序员的就业辅导、简历优化、模拟面试等。
 最新文章