某大厂二面编程题-用固定长度数组模拟队列实现

本文分享了一次某大厂二面的编程题,要求使用固定长度数组模拟队列,实现了入队、出队、获取队列长度和判断队列是否已满的功能。讨论了切片和固定长度数组两种实现方式,强调了结构体字段封装的重要性,以及面试中的应对策略。
摘要由CSDN通过智能技术生成


前言

刚面完某大厂二面golang后端,面试官人很好,给我出的面试题没那么难,但刚拿到手还是很懵B的,第一反应是拿切片实现,面试官同意了。虽然有点波折,但还是用切片做出来了。过程中有了数组实现的思路,就给面试官说了,他就我的思路问了几个问题,我回答的7788。二面也让我通过了,感恩。等待HR面,期待Offer。


一、题目

要求用固定长度数组模拟队列,要求实现入队、出队、队列长度、队列是否已满4个方法。

二、解决

1.切片实现

队列的特点是先进先出,我们只需要模拟这一过程就行。

go语言中,本来就可以用切片实现一个队列,入队的时候append到尾部,出队的时候,从头部开始切。经面试官提点,加了长度。注意实现的过程中出队时要判断队列里还有没有元素;入队时不能超过指定长度。

由于切片实现过于简单,我就只贴个结构体就行了,方法就不写了

type Queue struct {
   
	len   int
	arr   []int
}

2.固定长度数组实现

固定长度数组实现队列,需要注意的点是:

  • 定义队列的长度
  • 定义队列的头位置和尾位置
  • 入队时队尾指针向后移,出队时对头指针向后移
  • 注意头尾位置超过数组的最大长度处理
package main

import (
	"errors"
	"fmt"
	"sync"
)

func main() {
   
	queue := Queue{
   }
	var err error
	for i := 0; i < 12; i++ {
   
		if err = queue.In(i)
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值