笔试总结

简介: 笔试总结
  • 今天写了一个的笔试,当时有很多知识感觉很熟悉,但是就是不确定。
  • 就是我知道这道题很简单,但是我没有动手实现过这样的代码,我不确定最终结果是什么
  • 我认真思索了下,还是我对基础知识掌握不够牢固
  • 下面是我对这次笔试一些题的记录


关于接口的继承问题

  • 当实现接口的方法,用带指针的结构体实现的时候。
  • 将结构体强转为接口时,只能强转结构体的指针,而结构体本身不可以,会报错,如下所示:
type phone interface {
  call()
}
type xiaomi struct {
}
//如果这个带指针 * 
func (this *xiaomi) call() {
  fmt.Println("小米手机")
}
func main() {
  var p phone = new(xiaomi)
  var p phone = &xiaomi{}
  var p phone = xiaomi{}
}
复制代码

image.png


iota的问题

  • iota在const中使用,而且iota是从0开始的,会自增,所以我们经常可以是用iota定义一些字段,让他的值自增,写起来更方便
  • 但是多个const中的iota,在每一个const中都是从0开始的
  • iota的作用域只有一个const
const (
  a = iota
  b
)
const (
  c = iota
  d
)
结果 a,b,c,d = 0,1,0,1
复制代码


数组的问题

  • 数组的长度是数组数据类型的一部分
  • 在定义数组的时候,就已经有长度,而且会把数组给初始化
  • 数组初始化之后,会把所有的值初始化为默认值(int是0,bool是false)
var a [4]int
fmt.Println(a)
复制代码
  • 上面这个结果是 0,0,0,0
var a = [4]int{1, 2, 3}
fmt.Println(a)
复制代码
  • 下面这个结果是[1 2 3 0]


协程的问题

  • 得到的结果不是1,2,3 。也不是3,3,3。而是不确定,因为不知道执行时间,虽然都会被阻塞
  • 因为for循环很快,但是速度是无法确定,而且引用了外部变量
  • 这就变成了一个闭包,i的值是会变化的
wg.Add(3)
  for i := 0; i < 3; i++ {
    go func() {
      fmt.Println(i)
      wg.Done()
    }()
  }
  wg.Wait()
复制代码

不会输出2

var s = make(chan int, 1)
go func() {
   s <- 1
   s <- 2
   fmt.Println(2)
}()
<-s
复制代码


defer的问题

  • 会输出的结果是4,因为c是一个具名变量,defer在return执行之后,函数结束之前执行
  • 先执行C++,此时c=1
  • 然后执行return, c = a+b ,c =3
  • 然后执行defer, c++ , c=4

image.png

  • defer可以捕获panic
  • 因此defer的执行时机是panic之前
  • 而defer的执行顺序是栈-后进先出
  • 但是panic之后的defer不会被压入栈
defer func() {
    fmt.Println("a")
  }()
  defer func() {
    fmt.Println("b")
  }()
  panic("c")
  defer func() {
    fmt.Println("d")
  }()
复制代码

结果如下:

image.png

相关文章
|
1月前
|
存储 索引 关系型数据库
面试准备
【8月更文挑战第2天】
46 10
|
11月前
|
编译器 C语言
【面试笔试避坑指南】一
【面试笔试避坑指南】一
56 0
|
Python
搞定笔试 | 搞定笔试题 - 第 003 期
搞定笔试 | 搞定笔试题 - 第 003 期
|
缓存 NoSQL 算法
搞定笔试 | 搞定笔试题 - 第 004 期
搞定笔试 | 搞定笔试题 - 第 004 期
143 0
|
SQL 算法 Java
第一次笔试【面试】
第一次笔试【面试】
113 0
|
缓存 JavaScript 网络协议
面试(3)
面试(3)
|
算法 Python
搞定笔试 | 搞定笔试题 - 第 002 期
搞定笔试 | 搞定笔试题 - 第 002 期
|
5G Linux Python
搞定笔试 | 搞定笔试题 - 第 001 期
搞定笔试 | 搞定笔试题 - 第 001 期
|
Java 程序员 Linux
笔试的时候我居然踩了坑
笔试的时候我居然踩了坑
83 0
【学习笔记之我要C】大厂笔试,就这?
【学习笔记之我要C】大厂笔试,就这?
61 0