C ++에 대한 기술 평가에서 무엇을 기대해야합니까? [닫은]


10

주로 C ++를 사용하여 주니어 개발자로 일하기위한 기술 테스트 / 평가를 요청 받았습니다. 이것은 첫 번째 테스트 / 평가이며 2 시간입니다.

PHP에서 최근에 프로젝트를 수행 한 결과 C ++이 약간 녹슬 었습니다.

이 회사는 영국 회사이지만 후보자에 대한 기술 테스트는 어디에서나 거의 동일하다고 생각합니다.

이 테스트 중 하나에서 무엇을 기대해야합니까?


1
이 질문은 PHP를위한 것이지만, 대답은 다음과 같습니다 : programmers.stackexchange.com/questions/73654/…
Eric Wilson

답변:


5

그것은 C ++이므로 무엇이든 기대할 수 있습니다.

일반적으로 트릭 질문과 일종의 다형성 질문이 포함됩니다.

그러나 단순한 것일 수도 있습니다.

"소멸자를 가상으로 만드는 이유", "비 휘발성", 비현실적인 문제에 대한 "클래스 디자인", "연결된 목록 구현", "문자열 되돌리기"등과 같은 질문에 대한 답변을 준비하십시오.


" mutable키워드 가 무엇에 사용됩니까?" 모든 카테고리로
Tom

5

이 순수 C ++ 테스트 인 경우 (즉, 하지 윈도우 / MFC / 관리 C ++ 테스트), 다음 몇 시간 또는 스콧 마이어의와 하루를 보낼 효과적인 C ++를 당신은 아주 잘해야한다. 템플릿과 STL은 다루지 않지만 관심이 있다면 2 시간 동안 테스트하지 않을 것입니다. 몇 년이 지났지 만 C ++ 개발자들을 자주 인터뷰했습니다. Effective C ++ 의 아이디어는 C ++ 프로그래밍의 기본 아이디어이지만 후보자의 약 10 %만이 아이디어를 알고있었습니다.


1
도서 추천으로 +1-Scott Meyer의보다 효과적인 C ++ Book을 건너 뜁니다. 프로그래머와 인터뷰를 할 때도 지적 정직성을 보았으며 (당신은 허세하거나 허무하거나 모르는 것을 인정합니까), 모르는 것이 무엇인지, 어디에서 찾을 수 있는지 알고 있습니까 답변. (C ++에서 일하고 있다고 주장하는 사람을 인터뷰하면 질문이 훨씬 어려워집니다). 이력서에 다른 언어로 프로그래밍 기술을 제안하는 것이 없다면 간단한 프로그램을 작성하고 코너 케이스를 올바르게 다루 었는지 살펴보십시오.
MZB

나는 컴퓨팅 졸업생이며 C ++에서 콘솔에서 프로그램을 수행하는 방법을 배웠고 이진 정렬 트리를 구현하고 이중 연결 목록 등을 배웠습니다. 그런 다음 추상 클래스, 상속 및 다형성에 대해서도 배웠습니다. 구현 방법. 직업 역할은 졸업생을위한 것이므로 C ++에 대한 실제 근무 경험이 없기 때문에 그들이 나에게 기대하는 바를 모릅니다.
bearbread

4

글쎄, 그것은 당신이 구글을 사용하게 할 것인지 아닌지에 달려 있습니다. :피

나는 일반적으로 내 주변의 도구를 사용할 수있는 한 기술 테스트에서 꽤 잘합니다. 그들이 문제에 봉착했을 때 그들이 코드를 가리기를 원할 때. 제가 드릴 수있는 최선의 조언은 가정에서의 코드 맹목입니다 ... 기억할 수없는 경우 쉽게 확인할 수 있기 때문에 당연한 것으로 생각되는 사소한 것들을 기억하십시오.

또한 일반적으로 필요한 특수 기술을 확인하므로 작업 대상을 알고 있다면 집중하십시오.

(이것은 내 일반적인 경험이며 영국 출신이 아닙니다)


이론, 다형성, 상속은 어떻습니까? 나는 단지 졸업을 통해 그 이론을 알고 있지만 C ++로 구현하는 방법을 모른다
bearbread

그들의 구현은 그렇게 어렵지 않습니다. 아마 그것들을 매우 빨리 검토 할 수 있습니다. 중요한 부분은 필요할 때 언제 사용해야하는지 아는 것입니다. 실제 전제 조건보다 기능적 패턴입니다. 내가 의미하는 바는 당신이 그것들을 사용하지 않고 도망 갈 수 있다는 것입니다.
AJC

@bearbread : 이론 자체는 그다지 가치가 없습니다. 디자인 패턴에 대해 읽고 구현해보십시오.
Karoly Horvath

PHP 용 MVC와 같은 디자인 패턴을 알고 있습니다.
bearbread

1

연습 코드 kata 간단한 알고리즘 (링 버퍼, 하노이 타워, 이진 검색 등)을 선택하고 처음부터 코딩하십시오. 다음에, 다음에, 다음에, 다음에 다시, 다시 수행하십시오. 반복 할 때마다 어떻게 개선 할 수 있는지 살펴보십시오.


1
+1. 좀 더 경험이 많은 친구와 함께하십시오. 교대로 프로그램을 시작하면 새로운 것을 배울 수 있습니다.
Tom

0

당신이 무엇이든 기대할 수있는 것은 사실입니다.

그들은 테스트가 C ++이라고 말했지만 테스트에서 사용하는 C ++의 C 하위 세트 일 수 있습니다 (표준 라이브러리 문자열 대신 char 배열을 사용합니다). 이것은 알기 어려울 것입니다.

실제로 C ++ 인 경우 기본 사항을 보도록 조언합니다.

  • 클래스, 변수, 배열
  • 참조, 포인터 (및 기본적으로 사용하지 않아야하는 이유)
  • const 키워드의 사용법
  • 객체 지향 개념 (상속, 다형성 ...)
  • 템플릿

그때:

  • 표준 라이브러리 사용법 (std :: string, std :: vector, 컨테이너, ...)

0

지금까지 게시 된 내용은 훌륭했지만 내용과 이야기를 추가하겠습니다! C ++에서 알고있는 것을 소프트웨어 회사의 도메인 문제에 적용하는 연습을 말합니다. C ++의 모든 기능을 알고 있으면 좋겠지 만 문제에 적용 할 수 없다면 회사에 쓸모가 없습니다. 이것이 주니어 개발 직책이므로 C ++에 대한 모든 것을 알고 있다고 생각하지는 않습니다.

지난주 첫 개발자 직업에 대한 첫 번째 기술 테스트를 받았고 내가 찾은 것에 놀랐습니다. 나는 FizzBuzz와 같은 것을 기대하고 있었지만 (이것은 Java, btw) 더 뻔뻔 스럽지만 내가 찾은 것은 나에게 파일을주고 새로운 형식으로 파싱했다는 것입니다. 그 외에도 Google과 자체 라이브러리를 사용할 수 있습니다. 결론적으로, C ++을 알아야하지만 테스트가 어떤지 알고 싶으면 신청하려는 직위의 도메인을 살펴보고 해당 도메인의 무언가를 향해 C ++을 구현하는 작업을 수행하십시오.


나는 C ++ 프로그래머의 <1 %가 언어의 모든 것을 알고 있다고 생각할 것이다 .

0

당신은 :

  1. 코드 작성
  2. 객관식 선택
  3. 직접 인터뷰

코드를 작성할 때

그들은 당신이 알고 사용하기를 기대할 것입니다 :

  • RAII
  • 세 규칙
  • 스마트 포인터 이해

그들은 아마도 당신을 테스트 할 것입니다 :

  • 계승
  • 가상 기능
  • 스트림과의 직렬화
  • 산술 연산자에 과부하를가합니다 (실제로 사용되지는 않지만 테스트를 작성하기 쉽습니다).

운이 좋지 않으면 생각할 수도 있습니다

  • 다중 상속 및 가상 기본 클래스는 알아야합니다.
    • 그것은 아니지만 일부 사람들은 미쳐 버린다.

객관식을 선택할 때

  • 모든 OO 용어 이해
  • OO를 구현하는 C ++ 방법 이해

면접

  • 모든것 위에.
  • 재귀에 대한 지식
  • 재귀를 루프로 변환하는 방법
  • Big O () 복잡성 추정 방법
  • 표준 정렬 알고리즘 (거품뿐만 아니라).

1
저는 C ++이 아닌 C 프로그래머이므로 이야기를 모릅니다. 그러나 RIAA와 세 가지 규칙에 대해 들어 본 적이 없습니다. 그러나 RAII에 대해 들었습니다 (리소스 획득은 초기화입니다. 즉, 소멸자가 자체 엉망을 정리해야 함). 코드에 사본 ctr, 과부하 할당 연산자 또는 소멸자가 필요한 경우 세 가지가 모두 필요하다는 것을 알고 있습니다. 기술에 대한 테스트보다는 속어 프로그래밍에있어 무시 무시한 인터뷰는 회사에 대해 나쁜 일이라고 생각합니다.

1
마찬가지로 다중 상속 및 재귀에 대해 묻는 경우 코드베이스가 큰 혼란이라고 가정합니다. 그들이 당신이 파란색으로 모든 일반적인 정렬 알고리즘, 재귀 풀기, 객체 직렬화 등을하는 방법을 알기를 기대한다면, 그것은 회사에 대해 나쁜 것을 말합니다. 그들은 로봇에 대한 개발자를 기대하지 않습니까? 실제 세계에서는 사용하기 전에 그러한 것을 찾아보십시오. 내가 그 모든 것들의 배후에있는 이론을 알고 있더라도, 나는 무언가를 찾는 것보다는 최적의 솔루션을 사용하기 위해 여전히 그것들을 찾아 볼 것입니다.

@ 룬딘 : 부드러운 이름을 알 필요는 없지만 여기에서 언급하면 ​​원리를 알아야합니다. 어떤 알고리즘을 사용해야하고 언제 (그리고 더 중요한 이유는) 로봇이 할 수 없지만 인간이 잘하는 일을 알아야하기 때문에 정렬 알고리즘을 알아야합니다.
Martin York

재귀 또는 다중 상속에는 본질적으로 잘못된 것이 없습니다. 문제는 개발자가 그것을 사용하고 잘못하는 것입니다. 일부 문제는 재귀를 사용하여 (쉽게) 해결할 수 있습니다 (트리 구조 깊이를 먼저 구문 분석).
Martin York


-1

나는 마지막 인터뷰에서 :

값 / 레퍼런스 / 포인터로 객체에 함수를 전달하는 것과 그 위치와 이유는 다릅니다.

정수의 마지막 8 비트를 RGBA에서 RGAB로 바꿉니다.

RIAA는 무엇입니까?

템플릿 메타 프로그래밍 정의 : "TMP로이 문제 해결"과 관련하여 질문이있을 수 있습니다.

가변, 휘발성, const 등은 무엇을 의미합니까? 모든 키워드를 알고 있어야합니다.

여러 상속 .... 또 다시.

멀티 스레딩 : 생산자 소비자 및 버퍼 공유 메모리 개체

몇 가지 추가 주변 질문 :

UML 집계 및 구성

디자인 패턴 : 싱글 톤 구현 ... MVC의 공통 구성 요소는 무엇입니까?

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.