10대 기술 면접 문제


게시물Top 10 Technical Go Interview QuestionsQvault에 처음 등장했다.
당신은 지금 새로운 Go 개발자 직위를 면접 보고 있습니까?그렇게 지도 모른다, 아마, 아마...면접관이든 피면접관이든 익숙해야 할 좋은 문제들을 복습합시다.
만약 바둑 면접에서 더욱 상호작용적인 복습 방식에 관심이 있다면 우리의 Interview Prep – Go 과정을 시험해 보세요.더 많은 문제를 발견하고 브라우저에서 코드를 실행하며 준비 정도에 대한 즉각적인 피드백을 얻을 수 있습니다.
Take the Interview Prep Course Free

문답


1.goroutine과 운영체제 라인 간의 차이는 무엇입니까?

  • Go는 goroutines에 내부 채널을 제공하여 서로 안전하게 통신할 수 있도록 한다.
  • 전형적인 시스템에서 실행할 수 있는goroutine는 라인보다 많다.예를 들어, Java를 사용하면 수천 개의 스레드를 실행할 수 있습니다.Go가 있으면 백만 번을 뛸 수도 있는 Gorouting.
  • 운영 체제보다 Goroutines가 더 빨리 시작됩니다.
  • 여러 개의goroutine는 1:1이 아니라 운영체제 라인에 다중 복용된다.
  • 이벤트 프로그래밍에 도움을 청하지 않고 대규모 병렬 서버를 작성할 수 있습니다.
  • goroutine은 라인처럼 하드웨어에 의존하지 않는다.
  • goroutine 경량급, 메모리segmented stacks
  • 2. Go에서 상수를 계산할 수 있습니까?


    상수는 실행할 때 계산할 수 없으며, 그것들의 값은 컴파일할 때 이미 알고 있어야 한다.즉, 번역할 때 상수를 계산할 수 있으며, 통상적으로 다른 상수의 도수로 삼는다.예:
    const hours = 7643
    
    const minutes = hours * 60
    
    

    3. Go 생태계는 패키지와 의존항 관리에서 무엇을 사용합니까?


    최근까지 GOPATH 설정을 사용하면 개발자가 로컬 Go 작업공간에서 패키지를 가져올 수 있습니다.Go 1.13부터 go mod 설정을 사용하는 것이 가장 좋은 실천으로 여겨지는데 그 중에서 원본 코드는 GOPATH의 일부가 될 필요가 없다.
    Go는 NPM이나 Cargo와 같은 패키지 관리자를 사용하지 않습니다.Go 툴체인은 Git 소스 코드 관리 저장소에서 외부 의존 항목을 직접 가져오고 go get 특정 항목의 의존 항목을 관리하는 데 사용되는 go mod 등의 명령을 제공합니다.

    4. 당신은 어떻게 간단명료하게 Go의 두 변수의 값을 교환합니까?


    var1, var2 = var2, var1
    

    5. 당신은 바둑에서의 잘못된 처리 방법에 대해 어떤 선호가 있습니까?


    Go의 오류는 단일 Error() 메서드를 실행하는 모든 유형을 오류로 간주할 수 있는 인터페이스 유형입니다.
    type error interface {
        Error() string
    }
    
    함수가 오류가 발생할 수 있을 때마다, 예를 들어 네트워크 호출이나 형식 변환 등, 이 함수는 마지막 변수로 오류를 되돌려야 한다.호출자는 오류 값을 검사해야 합니다. nil 이외의 모든 값은 오류로 간주됩니다.
    익숙한 Go 개발자들은 if-else 체인이 아니라 특히 오류를 처리할 때 guard clauses 를 더 좋아할 것이다.적절하면 오류도 wrapped in a meaningful way 호출 창고로 전달되기 때문이다.

    6. 바늘은 무엇입니까? 당신은 언제 사용합니까?


    포인터 저장 값의 메모리 주소입니다.
  • & 동작 수를 가리키는 포인터를 생성합니다.
  • * 참조 포인터 해제(기본 값 공개).
  • 포인터는 다음과 같은 용도로 사용할 수 있습니다.
  • 함수의 직접 변이를 허용하는 값
  • 에지 상황에서의 성능을 향상시킵니다.대규모 데이터 구조를 전달하면 데이터 복제 효율성이 저하될 수 있음
  • 은 가치가 부족하다는 것을 나타낸다.예를 들어 JSON 데이터를 구조로 그룹화할 때 0이 아닌 키가 부족한지 알아보는 것이 유용하다.
  • 7. 동기화 간의 차이를 설명한다.상호 배척과 동기화.RWMutex


    한 번에 Goroutine만 접근할 수 있도록 일반적인 자물쇠 잠금 데이터입니다.
    RWMutex(읽기/쓰기)는 읽기 및 쓰기를 위해 데이터를 잠글 수 있습니다.읽기를 잠그면 다른 카드 리더기도 데이터를 잠그고 액세스할 수 있습니다.쓰기를 잠글 때, 다른 카드 리더를 포함하여 데이터에 접근할 수 있는goroutine가 없습니다.

    다음 코드를 고려하십시오.s1의 값은 얼마입니까?


    primes := [6]int{2, 3, 5, 7, 11, 13}
    s1 := primes[1:4]
    
    s1:
    현재 수조나 절편을 할 때 첫 번째 인덱스는 포함되고 마지막 인덱스는 독점적이다.콜론의 한쪽에서 색인을 생략하면 원래 슬라이스 가장자리까지 모든 값이 결과에 포함됩니다.

    9. 통로와 지도는 동시 방문에 안전합니까?


    채널은 병렬 접근에 안전하기 때문에 막히는 조작을 가지고 있다.비추는 것은 병렬 접근에 안전하지 않기 때문에 자물쇠 메커니즘(예를 들어 서로 밀어내는 자물쇠)이 있어야만 goroutine 사이에서 안전하게 사용할 수 있다.

    10. 사용자 정의 구조의 슬라이스를 어떻게 정렬합니까?


    구조 유형을 나타내는 슬라이스의 새로운 유형을 만들 것입니다.예:
    type fruitSlice[]fruit
    
    type car struct {
        size int
        color string
    }
    
    그리고 표준 라이브러리 sort.Interface 를 완성합니다.
    type Interface interface {
        Len() int
        Less(i, j int) bool
        Swap(i, j int)
    }
    
    그리고 나는 sort.Sort 기능을 사용할 수 있다.
    sort.Sort(fruitSlice(cars))
    

    읽어주셔서 감사합니다!


    질문이나 의견이 있으면 트위터에서 팔로우하세요
    Qvault Classroom에서 유사한 게임의 인코딩 과정을 배우다
    Subscribe 우리의 시사 통신을 읽고 더 많은 교육 문장을 이해하다

    좋은 웹페이지 즐겨찾기