GO 퀴즈 테스트 301

Q1. Go에서 사용하는 Concurrency 모델은?

Processor Threads
Callbacks and Promises
Communicating Sequential Processes
Events

Q2. 다음 Go 코드가 실행되었을 때, 출력값은?

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

	time.Sleep(1 * time.Second)
}

0부터 4를 출력한다
0부터 5를 출력한다
4를 5번 출력한다
5를 5번 출력한다

Q3. 다음중 잘못된 변수 선언문은?

var a []*Customer
var a chan interface{}
var a map[string][]chan string
var a [1:3]int

Q4. 다음중 Go 언어에서 기본적으로 지원하는 것은?

Inheritance
Method Overroding
Class
Composition

Q5. 다음 중 에러가 발생하는 코드는?

var b byte = 0x3D; var x uint8 = b
var i int32 = 100; var x int = i
var a rune = 'A'; var x int32 = a
s := "A"; var x *string = &s

Q6. 다음 Go 코드가 실행되었을 때, 출력값은?

package main

func main() {
	ch := make(chan int, 2)
	ch <- 1
	ch <- 2

	close(ch)

	println(<-ch)
	println(<-ch)
}

1을 출력한다
1 2 를 출력한다
데드락이 발생한다
채널 수신 에러가 발생한다

Q7. 다음 함수가 호출될 때의 출력 값은? 입력파라미터 level 값은 2000 이다.

func check(level int) string {
	if tag := "*"; level > 1000 {
		return string(level) + tag + tag + tag
	}

	return string(level) + tag
}

2000
2000*
2000***
컴파일 에러가 발생한다

Q8. 다음 중 Go에서 지원되는 것은?

Class
Getter/Setter
User Defined Type
Generics

Q9. 다음 Go 코드가 실행되었을 때, 출력값은?

package main

func main() {
	ch1 := make(chan int, 1)
	ch2 := make(chan int, 1)

	ch1 <- 1
	ch2 <- 2

	select {
	case c := <-ch1:
		println(c)
	case d := <-ch2:
		println(d)
	default:
		println(0)
	}
}

0을 출력한다
1을 출력한다
2를 출력한다
1 또는 2를 랜덤하게 출력한다

Q10. 다음 함수를 호출할 때, id가 "1000" 이면 result 값은?

func decode(id string) (result string) {
	switch {
	case id == "100":
		result = "Warning"
	case id == "500", len(id) > 3:
		result = "Error"
	case id == "1000":
		result = "Not Supported"
	default:
		result = "Not Imeplemented"
	}
	return
}

Warning
Error
Not Supported
Not Imeplemented