心动游戏面试总结

https://segmentfault.com/a/

Big Endian 转换 Little Endian

Big Endian

   低地址                                            高地址
   ----------------------------------------->
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |     12     |      34    |     56      |     78    |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Little Endian

   低地址                                            高地址
   ----------------------------------------->
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |     78     |      56    |     34      |     12    |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

package main

import (
    "fmt"
)

func LTB(inputb []byte) (r []byte) {

    for i := len(inputb); i > 0; i-- {
        r = append(r, inputb[i-1])
    }

    return r
}
func main() {
    b := []byte{0x18, 0x2d, 0x44, 0x54, 0xfb, 0x21, 0x09, 0x40}
    for _, v := range b {
        fmt.Printf("%x ", v)
    }
    fmt.Println()

    ob := LTB(b)

    for _, v := range ob {
        fmt.Printf("%x ", v)
    }
}

[ `go run LTB.go` | done: 156.289215ms ]
    18 2d 44 54 fb 21 9 40 
    40 9 21 fb 54 44 2d 18
[ ~/WorkSpace/ ] #

Deffer 执行顺序

package main

import (
    "fmt"
)

func A() {
    fmt.Println("I'm A")
}

func B() {
    fmt.Println("I'm B")
}

func C() {
    fmt.Println("I'm C")
}

func D() {
    fmt.Println("I'm D")
}
func main() {
    defer A()
    defer B()
    defer func() {
        defer C()
        D()
    }()
}

我跟面试官说的是要么A 要么D 结果面试官说是C 果断的执行一波

[ `go run DEFFER.go` | done: 140.839637ms ]
    I'm D
    I'm C
    I'm B
    I'm A
[ ~/WorkSpace/ ] # 

有关 channel 阻塞我还没弄明白回头补上