目 录CONTENT

文章目录

长沙数创 | Golang实习

RobKing
2022-10-21 / 0 评论 / 0 点赞 / 78 阅读 / 907 字

长沙数创 | Golang实习

时间:2022.10.21

  • 自我介绍
  • go语言的chanel
  • GMP模型
  • redis的数据结构
  • redis持久化的方式
  • es的倒排索引
  • 简易版抖音项目的登录注册实现,防网络攻击
  • mysql的隔离级别
  • innodb的数据结构,b树和b+树的区别
  • 计算机网络的七层模型
  • ip的分类,ICMP协议
  • RobGin中间件怎么实现的?

反思

虽然这是我第一次线下面试,但其实我是不紧张的,毕竟有了线下实习的经验。

  • 面试的时候还是有几个问题没有理Go | 匿名,回调函数,闭包

    匿名函数

    简单来说就是没有名字的函数,比如说

    func main () {
    	func(str string) {
    		fmt.Println("hello ", str)
    	}("world")
    }
    
    
    

    回调函数

    简单来说就是函数的参数包括函数,比如说稳定排序函数:

    func SliceStable(slice interface{}, less func(i, j int) bool)
    
    // 按照结构体val降序
    type S struct {
    	name string
    	val int
    }
    
    func main () {
    	arr := make([]S, 0)
    	less := func(i, j int) bool {
    		return S[i].val > S[j].val
    	}
    	sort.SliceStable(arr, less)
    }
    
    

闭包

简单来说,闭包就是返回函数的函数,在一个函数内部定义另一个函数,内部的函数可以访问外部的变量。

比如:

func counter() func() int {
	count := 0 // 这是外部函数的变量 
	// 内部函数是闭包 
	innerFunc := func() int { 
		count++ // 可以访问外部函数的变量 
		return count 
	} 
	return innerFunc 
}

参考:
GO高阶函数:匿名函数、回调函数和闭包

  • 解得太深入,比如说B树和B+树,这个答案我是知道的,但是面试官问我B+树和B树的结构,还说如果是保存用户id是怎么保存的,因为只是概念层次的理解,所以具体的实践并不清楚,从这一点来看,除了掌握理论知识,更应该将这些知识运用在实际的开发中,思考一下如果在实际开发中将会如何使用,所以知识的最终去向一定是实际运用,不然就没有什么意义。
  • 还有就是像ES这种,因为是跟着书做的项目,所以其实对es理解是不深入的,只是知道别人是那样使用的,而自己掌握的就只有这个使用,而面试的话是远远不够的,还是要准备一些面试会问的问题。
  • 其次就是项目问题,就登陆注册来说,如果就简单的密码加密校验,在实际开发环境看来这是最简单的方式了,所以必须考虑一下是不是要防止网络攻击等因素。这一点给我的教训就是项目还有很多的地方是可以去完善的,特别是分布式对象存储,可以自己添加功能,尝试部署在docker和k8s上,对于放在简历上的项目一定要十分熟悉才行,也就不会出现中间件怎么实现回答不上来的情况

保持一个好习惯吧,对于面试完之后没有回答上来的问题,及时地解决,面试完就去寻找满意的答案,而不是一直拖着拖着,在学习的过程中也是,遇到了就及时解决,不要一直堆放在那里!

0

评论区