카테고리 없음

상위 20 개 GO 프로그래밍 (Golang) 인터뷰 질문 및 답변

shypang 2021. 3. 17. 00:21

 

1) GO가 무엇인지 설명하십시오.

GO는 간단하고 안정적이며 효율적인 소프트웨어를 쉽게 구축 할 수있는 오픈 소스 프로그래밍 언어입니다. 프로그램의 종속성을 효율적으로 관리 할 수있는 속성을 가진 패키지로 구성됩니다.

2) GO에서 구문은 무엇입니까?

GO의 구문은 EBNF (Extended Backus-Naur Form)를 사용하여 지정됩니다.

  • Production = production_name“=”[Expression]
  • 표현식 = 대안 {“l”대안}
  • 대안 = 기간 {기간}
  • 용어 = Production_name l 토큰 [“…”token] l 그룹 l 옵션 l 반복
  • 그룹 =“(“Expression”)”
  • 옵션 = "["표현식 "]"
  • 반복 =“{“Expression“}”

3) 문자열 리터럴이 무엇인지 설명하세요?

문자열 리터럴은 일련의 문자를 연결하여 얻은 문자열 상수를 나타냅니다.

두 가지 형태가 있습니다.

  • 원시 문자열 리터럴 : 원시 문자열 리터럴의 값은 역 따옴표 ''사이의 문자 시퀀스입니다. 문자열 리터럴의 값은 따옴표 사이에 중단되지 않은 문자로 구성된 문자열입니다.
  • 해석 된 문자열 리터럴 : 큰 따옴표 ""사이에 표시됩니다. 줄 바꿈을 포함 할 수없는 큰 따옴표 사이의 텍스트는 리터럴의 값을 형성합니다.

4) Go 프로그램의 패키지를 설명 하시겠습니까?

모든 GO 프로그램은 패키지로 구성됩니다. 프로그램이 main 패키지에서 실행되기 시작합니다  이 프로그램은 "fmt"  "math / rand" 가져 오기 경로가있는 패키지를 사용하고 있습니다.

5) GO의 작업 공간을 설명 하시겠습니까?

작업 공간 내에 GO 코드를 보관해야합니다. 작업 공간은 루트에 세 개의 디렉토리가있는 디렉토리 계층 구조입니다.

  • src는 패키지로 구성된 GO 소스 파일을 포함합니다.
  • pkg는 패키지 객체를 포함하고
  • bin에는 실행 가능한 명령이 있습니다.
  •  

6) GO 언어로 사용자 지정 패키지를 사용하는 방법을 설명 하시겠습니까?

라이브러리를 별도의 get –table 프로젝트로 만들고 라이브러리가 내부 용인 경우 다음과 같이 코딩 할 수 있습니다.

  • 프로젝트 디렉토리 아래에 라이브러리 파일이있는 디렉토리를 배치하십시오.
  • 프로젝트를 구성하는 작업 공간의 루트에 상대적인 경로를 사용하여 라이브러리를 참조하십시오.

예를 들면

src /

myproject /

mylib /

mylib.go

. . .

main.go

이제 main.go 에서 myprojec / mylib 가져올  있습니다.

7) GOPATH 환경 변수가 무엇인지 설명하십시오.

GOPATH 환경 변수는 작업 공간의 위치를 ​​결정합니다. Go 코드를 개발할 때 설정해야하는 유일한 환경 변수입니다.

8) GO에서 테스트를 수행하는 방법을 설명 하시겠습니까?

go test 명령과 테스트 패키지  구성된 경량 테스트 프레임 워크가 있습니다 .

테스트를 작성하려면 이름이 _testing으로 끝나는 파일을 만들어야합니다. 서명 func (t * testing.T)가있는 TestXXX라는 함수가 포함 된 Go. 테스트 프레임 워크는 이러한 각 기능을 실행합니다.

9) 문자열 유형이 무엇인지 설명하십시오.

문자열 유형은 문자열 값 세트를 나타내고 문자열 값은 바이트 시퀀스입니다. 일단 생성 된 문자열은 변경할 수 없습니다.

10) GO의 장점은 무엇입니까?

  • GO는 매우 빠르게 컴파일됩니다.
  • Go는 언어 수준에서 동시성을 지원합니다.
  • 함수는 GO의 일급 객체입니다.
  • GO에는 가비지 컬렉션이 있습니다.
  • 문자열과 맵은 언어에 내장되어 있습니다.

 

11) GO에 내장 된 지원을 나열 하시겠습니까?

GO에서 사용 가능한 기본 제공 지원에는 다음이 포함됩니다.

  • 컨테이너 : 컨테이너 / 목록, 컨테이너 / 힙
  • 웹 서버 : net / http
  • 암호화 : Crypto / md5, crypto / sha1
  • 압축 : compress / gzip
  • 데이터베이스 : 데이터베이스 / sql
  •  

12) GO에서 바둑 루틴이 무엇인지 설명하십시오.

고 루틴은 다른 기능과 동시에 실행할 수있는 기능입니다.

고 루틴을 중지하려면 고 루틴에 신호 채널을 전달합니다. 해당 신호 채널은 고 루틴을 중지하려는 경우 값을 푸시하는 데 사용됩니다. 고 루틴은 신호를 감지하는 즉시 해당 채널을 정기적으로 폴링하고 종료합니다.

Quit : = make (chan bool)

go func ( ) {

for  {

select {

case <- quit:

return

default

// do other stuff

}

}

}()

// Do stuff

// Quit goroutine

Quit <- true

13) GO에서 여러 줄 문자열을 작성하는 방법을 설명하십시오.

GO에서 여러 줄 문자열을 작성하려면 원시 문자열 리터럴을 사용할 수 있습니다. 여기서 문자열은 큰 따옴표가 아닌 역 따옴표로 구분됩니다.

‘ line  1

line  2

line  3 ’

14) GO 프로그램에 전달 된 명령 줄 인수에 액세스하는 방법을 설명하십시오.

os .Args 변수를 사용하여 명령 줄 인수에 액세스 할 수 있습니다 . 예를 들면

Package main

import (

“fmt”

“OS”

)

func main () {

fmt.Println(len(os.Args), os.Args)

}

15) GO에서 포인터가 어떻게 표현되는지 설명하십시오.

GO에서 포인터는 * (별표) 문자 다음에 저장된 값의 유형을 사용하여 표시됩니다.

16) 어떻게 인쇄하지 않고 문자열을 포맷 할 수 있습니까?

인쇄하지 않고 문자열을 포맷하려면 명령을 사용해야합니다.

return fmt.Sprintf ( "at % v, % s", e.When, e.What)

17) GO의 배열이 C와 어떻게 다르게 작동하는지 설명하십시오.

GO Array 에서 C에서 작동하는 것과 다르게 작동합니다.

  • 배열은 값이며 한 배열을 다른 배열에 할당하면 모든 요소가 복사됩니다.
  • 함수에 배열을 전달하면 포인터가 아닌 배열의 복사본을받습니다.
  • 배열의 크기는 유형의 일부입니다. 유형 [10] int 및 [20] int는 구별됩니다.

18) GO 인터페이스를 설명 하시겠습니까?

GO에서 인터페이스는 개체의 동작을 지정하는 방법입니다. 인터페이스는 "유형" 단어, 이름 및 키워드 인터페이스 를 사용하여 생성됩니다 . 인터페이스는 두 가지로 지정됩니다.

  • 일련의 방법
  • 또한 유형이라고도합니다.

19) Type assertion이 어떤 용도로 사용되고 어떻게 사용되는지 설명하십시오.

유형 변환은 GO에서 서로 다른 유형을 변환하는 데 사용됩니다. 유형 어설 션은 인터페이스 값을 가져 와서 지정된 명시 적 유형의 값을 검색합니다.

20) GO 언어에서 런타임에 변수 유형을 어떻게 확인할 수 있습니까?

런타임시 변수 유형을 확인하기 위해 GO에서 특수 유형의 스위치가 전용되며이 스위치를 유형 스위치라고합니다. 또한 Type Switch를 사용하여 인터페이스 값의 유형을 전환 할 수 있습니다.