Giter VIP home page Giter VIP logo

golang-interview's Introduction

Hi there, I’m Yqchilde



  • 🔭 I am currently working as a Golang backend developer.
  • 🌱 I’m currently learning Golang, Python.
  • 👯 I’m looking to collaborate on Micro-service, PaaS, SaaS and so on…
  • 💬 Ask me about Anything you want~
  • 📫 Reach me: [email protected]
  • 😄 Pronouns: Yqchilde
  • ⚡ Fun fact: Watching movies and traveling.




Visitor count

golang-interview's People

Contributors

yihau avatar yqchilde avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

golang-interview's Issues

171. 下面代码有什么问题,请说明?

func main() {
    runtime.GOMAXPROCS(1)

    go func() {
        for i:=0;i<10 ;i++  {
            fmt.Println(i)
        }
    }()

    for {}
}

以上代码在go1.14版本之前(不含1.14版本): for {} 独占 CPU 资源导致其他 Goroutine 饿死

这是因为1.14版本之前(不含1.14版本)goroutine抢占式调度设计是在函数调用间隙判断是否可以被抢占, 而for{}内没有函数调用, 所以无法被抢占. 所以导致其他goroutine饿死.

image

在go1.14版本之后(包含go1.14): ** 会打印0123456789, 并且主程会进入死循环**.

这是因为1.14版本(含1.14版本)之后goroutine抢占式调度设计改为基于信号的抢占式调度. 当调度器监控发现某个goroutine执行时间过长且有别的goroutine在等待时, 会把执行时间过长的goroutine暂停, 转而调度等待的goroutine. 所以for循环的goroutine得以执行.

image

187 题并没有数值溢出,是什么原因呢?

版本:go version go1.15.3 windows/386
m 和 n 的结果:

m:0   n:0
m:1   n:1
m:2   n:2
m:3   n:3
m:4   n:4
m:5   n:5
m:6   n:6
m:7   n:7
m:8   n:8
m:9   n:9
m:10   n:10
m:11   n:11
m:12   n:12
m:13   n:13
m:14   n:14
m:15   n:15
m:16   n:16
m:17   n:17
m:18   n:18
m:19   n:19
m:20   n:20
m:21   n:21
m:22   n:22
m:23   n:23
m:24   n:24
m:25   n:25
m:26   n:26
m:27   n:27
m:28   n:28
m:29   n:29
m:30   n:30
m:31   n:31
m:32   n:32
m:33   n:33
m:34   n:34
m:35   n:35
m:36   n:36
m:37   n:37
m:38   n:38
m:39   n:39
m:40   n:40
m:41   n:41
m:42   n:42
m:43   n:43
m:44   n:44
m:45   n:45
m:46   n:46
m:47   n:47
m:48   n:48
m:49   n:49
m:50   n:50
m:51   n:51
m:52   n:52
m:53   n:53
m:54   n:54
m:55   n:55
m:56   n:56
m:57   n:57
m:58   n:58
m:59   n:59
m:60   n:60
m:61   n:61
m:62   n:62
m:63   n:63
m:64   n:64
m:65   n:65
m:66   n:66
m:67   n:67
m:68   n:68
m:69   n:69
m:70   n:70
m:71   n:71
m:72   n:72
m:73   n:73
m:74   n:74
m:75   n:75
m:76   n:76
m:77   n:77
m:78   n:78
m:79   n:79
m:80   n:80
m:81   n:81
m:82   n:82
m:83   n:83
m:84   n:84
m:85   n:85
m:86   n:86
m:87   n:87
m:88   n:88
m:89   n:89
m:90   n:90
m:91   n:91
m:92   n:92
m:93   n:93
m:94   n:94
m:95   n:95
m:96   n:96
m:97   n:97
m:98   n:98
m:99   n:99
m:100   n:100
m:101   n:101
m:102   n:102
m:103   n:103
m:104   n:104
m:105   n:105
m:106   n:106
m:107   n:107
m:108   n:108
m:109   n:109
m:110   n:110
m:111   n:111
m:112   n:112
m:113   n:113
m:114   n:114
m:115   n:115
m:116   n:116
m:117   n:117
m:118   n:118
m:119   n:119
m:120   n:120
m:121   n:121
m:122   n:122
m:123   n:123
m:124   n:124
m:125   n:125
m:126   n:126
m:127   n:127
m:128   n:-128
m:129   n:-127
m:130   n:-126
m:131   n:-125
m:132   n:-124
m:133   n:-123
m:134   n:-122
m:135   n:-121
m:136   n:-120
m:137   n:-119
m:138   n:-118
m:139   n:-117
m:140   n:-116
m:141   n:-115
m:142   n:-114
m:143   n:-113
m:144   n:-112
m:145   n:-111
m:146   n:-110
m:147   n:-109
m:148   n:-108
m:149   n:-107
m:150   n:-106
m:151   n:-105
m:152   n:-104
m:153   n:-103
m:154   n:-102
m:155   n:-101
m:156   n:-100
m:157   n:-99
m:158   n:-98
m:159   n:-97
m:160   n:-96
m:161   n:-95
m:162   n:-94
m:163   n:-93
m:164   n:-92
m:165   n:-91
m:166   n:-90
m:167   n:-89
m:168   n:-88
m:169   n:-87
m:170   n:-86
m:171   n:-85
m:172   n:-84
m:173   n:-83
m:174   n:-82
m:175   n:-81
m:176   n:-80
m:177   n:-79
m:178   n:-78
m:179   n:-77
m:180   n:-76
m:181   n:-75
m:182   n:-74
m:183   n:-73
m:184   n:-72
m:185   n:-71
m:186   n:-70
m:187   n:-69
m:188   n:-68
m:189   n:-67
m:190   n:-66
m:191   n:-65
m:192   n:-64
m:193   n:-63
m:194   n:-62
m:195   n:-61
m:196   n:-60
m:197   n:-59
m:198   n:-58
m:199   n:-57
m:200   n:-56
m:201   n:-55
m:202   n:-54
m:203   n:-53
m:204   n:-52
m:205   n:-51
m:206   n:-50
m:207   n:-49
m:208   n:-48
m:209   n:-47
m:210   n:-46
m:211   n:-45
m:212   n:-44
m:213   n:-43
m:214   n:-42
m:215   n:-41
m:216   n:-40
m:217   n:-39
m:218   n:-38
m:219   n:-37
m:220   n:-36
m:221   n:-35
m:222   n:-34
m:223   n:-33
m:224   n:-32
m:225   n:-31
m:226   n:-30
m:227   n:-29
m:228   n:-28
m:229   n:-27
m:230   n:-26
m:231   n:-25
m:232   n:-24
m:233   n:-23
m:234   n:-22
m:235   n:-21
m:236   n:-20
m:237   n:-19
m:238   n:-18
m:239   n:-17
m:240   n:-16
m:241   n:-15
m:242   n:-14
m:243   n:-13
m:244   n:-12
m:245   n:-11
m:246   n:-10
m:247   n:-9
m:248   n:-8
m:249   n:-7
m:250   n:-6
m:251   n:-5
m:252   n:-4
m:253   n:-3
m:254   n:-2
m:255   n:-1

38. 下面这段代码输出什么?

func main() {  
    i := 65
    fmt.Println(string(i))
}

执行错误, i 为int类型, string(int)会失败. 应该改为

var i byte = 65
// 或
var i int32 = 65

193题答案和个人思路(望大家指点)

输出结果为""

strings.TrimRight的作用是把有包含第二个参数的组合项的对应字母都替换掉,比如"BA"的组合集合为{"BA", "AB", "A", "B"};
但是它有一个中止条件,如果从右到左有一个字母或字母组合不为"BA"的排列组合集合中的元素,便会停止cut,把当前已cut完的字符串返回
测试代码如下:

import (
        "fmt"
        "strings"
)

func main() {
        var f = func(example, cutset string) {
		result := strings.TrimRight(example, cutset)
		fmt.Println(result == "")
		fmt.Printf("example : %s, cutset : %s, result : %s\n", example, cutset, result)
	}

	f("ABBA", "BA")
	f("ABCBA", "BA")
}
###############################
Output:
true
example : ABBA, cutset : BA, result : 
false
example : ABCBA, cutset : BA, result : ABC

17题

func hello() []string {
    return nil
}

func main() {
    h:=hello
    if h() ==nil {
        fmt.Println("nil")
    } else {
        fmt.Println("not nil")
    }
}

h() 后面有括号,已经是执行了函数hello了,所以是返回值nil ,所以应该是 nil 吧。所以应该是A吧

194题答案和个人思路(望大家指点)

输出结果为[]

copy函数实际上会返回一个int值,这个int是一个size,计算逻辑为
size = min(len(dst), len(src))
这个size的大小,决定了src要copy几个元素给dst
由于题目中,dst声明了,但是没有进行初始化,所以dst的len是0
因此实际没有从src上copy到任何元素给dst

修改版本如下:

func main() {
        var src, dst []int
	src = []int{1, 2, 3}
        //这是未修改前的
	copy(dst, src)
	fmt.Println(dst)

        //这是修改时添加的
	dst = make([]int, len(src))
	copy(dst, src)
	fmt.Println(dst)
}

第4题是不是写错了?

func funcMui(x, y int) (sum int, error) {
    return x, y, nil
}

是不是应该写成

func funcMui(x, y int) (sum int, error) {
    return x + y, nil
}

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.