최근 졸업생들이 기본 프로그래밍 개념에 익숙 할 것으로 기대해야합니까? [닫은]


9

대학에서 몇 년간 프로그래밍을 공부 한 사람과 실제로 알고있는 사람 사이에 큰 차이가있는 것 같습니다.

인터뷰에서 지나치게 복잡한 질문을하는 것 같은 느낌이 들지 않습니다. 내 일반적인 질문 중 일부는 다음과 같습니다

  • 참조 유형과 값 유형의 차이점은 무엇입니까?

    인터뷰 대상자가 자신의 답변을 실제로 이해하지 못하는 것 같거나 사용중인 용어를 모르는 경우 int i = 0을 쓸 때 어떤 일이 발생하는지 설명하도록 요청하여 더 자세한 정보를 얻습니다. 메소드에서 객체 o = 0, 객체 o = new MyClass () 등은 어떻습니까?

    기본적으로, 나는 인터뷰 대상자가 콜 스택, 힙 등에 대해 알려주도록 속일 수 있으며 언어에 구애받지 않는 개념을 유지하려고 노력합니다. 인터뷰 대상자가 많은 C 또는 C ++ 또는 C #을 수행했다고 말하면 특정 언어와 구현 세부 사항에 대해 자세히 알아 봅니다.

    필요한 경우, 인터뷰 대상에게 콜 스택이 무엇인지, 또는 자신이 선택한 명령형 언어로 함수에 전달 된 인수가 저장되는 위치를 묻습니다.

    대부분의 인터뷰 대상자는 권투 고려 사항은 물론 콜 스택이 무엇인지 전혀 모릅니다.

  • 추상 클래스와 인터페이스의 차이점은 무엇입니까? 어떤 경우에 다른 것을 사용해야합니까?

    일반적으로 상속과 추상 팩토리를 사용하는 유스 케이스가있는 작은 라이브러리의 디자인을 상상해 보라고 요청합니다.

    인터뷰 대상자 대부분은 상속의 실제 목적이 무엇인지 전혀 모릅니다. 그들은 일반적으로 일부 키워드 (가상, 재정의 등)를 알고 있지만 가상 테이블이 무엇인지 설명하지 않고 키워드를 언제 사용 해야할지 실제로 알지 못합니다.

CV를 사전에 검사하더라도 복잡한 아키텍처와 관련된 실제 프로젝트에서 5 년의 경험이있는 사람이라도 모든 인터뷰 대상자의 25 % 미만이이 두 가지 질문에 올바르게 대답 할 수 있다고 말합니다. 그리고 내가 올바르게 말할 때, 나는 '심층적'을 의미하는 것이 아닙니다. 단지 개념이 무엇인지에 대한 대략적인 아이디어를 갖는 것입니다.

후배들에 관해서는, 시간을 잘 정리하는 방법을 모르는 사람이나 예를 들어 산업 건축 과정에 익숙하지 않은 사람을 고용하는 것이 좋습니다.하지만 " 컴퓨터 과학을 공부 한 몇 년 후, 그는 멍청하거나 동기가 없거나 대학을 매우 현명하게 선택했습니다.

내가 여기서 극단 주의자라고 생각합니까? 대학을 마치고 나면 이러한 기본 개념을 배우는 것이 일반적입니까? 당신은 이것에 익숙하지 않은 사람들을 알고 있으며 몇 년 후에 아주 훌륭한 소프트웨어 엔지니어가되었습니다. 저의 회사가 재능있는 인재를 유치하는 데 문제가 있거나 자신의 채용 과정에서 같은 종류의 문제를 경험하고 있다고 생각하십니까?


편집하다. "즉시 유형"에 관해서는, 우리가 보통 프랑스어로 면담을하는 것처럼 프랑스어에서 영어로의 문자 그대로의 번역 일뿐입니다. 나는 내 질문에 그것을 고쳤다. 그러나 여전히, 나는 당신이 내가 의미하는 바를 완벽하게 이해한다고 생각합니다.


4
단지 사소한 말이지 만, 나는 당신에게 설명 할 수있는 즉각적인 유형, 가치 유형으로 당신이 무엇을 의미하는지 알지 못합니다. 그러나 CS 학위를 취득한 모든 사람이이 두 가지 질문에 대답 할 수 있어야한다고 생각합니다. 질문을 개선하기 위해 예상되는 답변이 얼마나 철저한 지에 대한 예를들 수 있습니다.
sebastiangeiger

대학에서 2 년 이상 언어를 공부하고 다른 과목과의 경쟁을 통해 학생들은 시험이 끝난 후 최소한의 시간 만 남게됩니다. 당신이 확신 할 수있는 유일한 것은 그들이 그 정보를 배울 수 있다는 것입니다. 실질적인 경험 만이 그들에게 지식 영속성을 줄 수 있습니다. Joel Spolsky는 프로그래머가 블로그 기사 ( http://www.joelonsoftware.com/items/2009/10/26.html)
Justin Shield

@sebastiangeiger; 당신은 올바르게 업데이트되었습니다!
Brann

2
그는 거의 아무것도 모른다는 것을 알아야합니다. 이것이 시간이 지남에 따라 더 나아질 핵심 포인트입니다.
deadalnix

흥미롭게도이 질문에 대답 한 모든 사람들은 "즉시 유형"(번역 오류)을 언급하고 그것이 무엇인지 모른다고 말합니다. 귀하의 인터뷰 담당자는 "이러한 문제를 심층적으로 연구하지 않았습니까?"라고 말합니다. 또는 예를 들어 런타임 관련 사항 및 컴파일러에 대한 깊은 이해에 대해 전문가라고 주장하고 있습니까?
Pindatjuh

답변:


15

용어는 인터뷰 상황에서 흔히 발생하는 오류입니다.

인터뷰 대상자는 자신에게 무언가를 의미하는 용어를 사용하여 질문을하지만 인터뷰 대상은 다른 용어로 알고 있거나 특정 언어 나 환경에 적용하지 않고 일반적인 이론을 알고있을 수 있습니다. 오해가 뒤 따른다. 어느 쪽도 행복하지 않습니다.

실제로 인터뷰 대상자는 일부 값이 레지스터에 직접 저장 될 수 있고 다른 값은 다른 곳에서 메모리 덩어리를 참조한다는 것을 완벽하게 이해하고 있지만 특정 도메인 주도 방식으로 질문하기 때문에 요청한 사항의 포인트 면접관이 당신에게 말하고 싶은 것은 실제로 지나치지 않습니다.

인터뷰 대상자가 갑자기 클릭 및 이동이 '- 아 어디 어쩌면 당신은 상황을 많이 얻을 수 있어 그 다음 아주 적절하게 설명 - 당신이 무슨 말을하는지'.

대학을 졸업 한 프로그래머는 팀 환경에서 실제 세계 개발이 제공하는 다양한 경험을 갖지 않기 때문에 힘든 균형입니다. 한편 숙련 된 개발자는 일상적으로 사용하기에 적합하지 않기 때문에 대학에서 배운 모든 내용을 기억하거나 관심을 갖지 않는 경우가 많습니다.

사람들의 이러한 두 가지 유형 - 의사 소통하는 방법을 배울 필요 (네 즉 인터뷰와 면접관의) 와 함께 당신이 배울 수 있습니다 전에 서로 에 대해 서로. 이런 일이 일어나기 위해서는 경험이 많은 사람 (면접관)에게 맡겨야합니다.

일부 사람들은 인터뷰에서 완전한 기억력 장애를 경험한다는 사실은 말할 것도 없습니다. 자신도 포함되어 있습니다. 나는 C로 프로그램을 작성하라는 요청을 받았으며 내 인생에서 포인터 (->)에서 멤버에 액세스하는 데 사용되는 기호를 기억하지 못하고 누군가에게 물어야했습니다. 내 첫 직장조차 아니었다. 소년은 그 순간이 지난 15 년 동안 저를 괴롭 혔습니다 :-)

제 생각에는 의사 소통 능력, 문제를 효율적이고 완전하게 해결할 수있는 능력이 훨씬 더 유용합니다. 물건을 빨리 집어 올리십시오. 긍정적 인 예리한 태도를 보인다; 다른 사람 및 다른 핵심 가치와 잘 어울립니다.

인터뷰 대상자는 즉각적인 유형이 무엇인지 모르기 때문에 포기하지 마십시오. 어서


@Brann-즉시 유형-> 값 유형. 주목
Roger Attrill

글쎄, 어쩌면 내 질문의 말로 충분히 명확하지는 않지만 용어 문제가 없는지 확인하기 위해 실제로 많은 일을합니다. 나는 인터뷰 대상에게 자신이 선택한 언어로 특정 상황에서 어떤 일이 발생하는지 묻고 콜 스택이 무엇인지 알고 그에게 "기억"이 다른지 물어보고 함수에 전달 된 인수가 어디에 있는지 묻습니다. 자신이 선택한 명령형 언어로 저장됩니다. 실제로, 나는 그것이 용어 문제라고 생각하지 않습니다. 때때로, 인터뷰 대상자는 수업이 인스턴스화 될 때 배후에서 일어나는 일에 대해 전혀 아이디어가 없습니다.
Brann

"이동"과 관련하여 제가 보통하는 일입니다. 그러나 내 경험에 따르면, 인터뷰 대상자가 값 유형이 무엇인지 알지 못하면 스레드 동기화 또는 제네릭의 용도 등을 알지 못합니다. 따라서 몇 가지 질문 후에 후보자가 명확 해지면 직업에 적합하지 않다. 나는 보통 그에게 기술적 인 면접에서 더 잘 수행하는 법을 배우고 다음 후보자와 함께 나아가 야 할 것에 대한 조언을한다 :)
Brann

12

언어 별 지식을 요구하고 있으며 사용하는 용어가 모든 언어에서 100 % 동일하게 사용되는 것은 아닙니다. 나는 "즉시 유형"이 무엇인지 전혀 모른다.

또한 대학에서 가르치는 것은 X로 표준 코드를 작성하는 방법이 아니라 많은 기본 개념을 배우고 다양한 프로그래밍 패러다임을 보았습니다. 다시 말해, 운전 면허와 매우 유사합니다. 기본 이론을 알고 있지만 실제 연습이 많이 필요합니다.


"값 유형"으로 업데이트했습니다. 그러나 문제는 인터뷰 대상자가 질문을 이해하지 못하면 일반적으로 더 자세히 설명하고 인터뷰 대상이 콜 스택, 힙 등에 대해 알려주도록 속이는 많은 것들을 시도한다는 것입니다. 이것들은 구현 세부 사항이지만 여전히 언어 별 IMO가 아닌 일반적인 개념입니다)
Brann

"콜 스택"개념은 당신이 말하는 일반적인 개념 중 하나라고 생각합니다. 인터뷰 대상자가 메모리 할당, 콜 스택, 값 유형 등에 대해 나에게 말할 것을 기대하고 있음을 확인하기 위해 10 가지 다른 방법으로 질문에 다시 단어를 쓴 후에도 여전히 빈번히 쳐다 본다 ...
Brann

내가 당신을 올바르게 이해한다면, 개발자가 포인터를 알고 포인터가 무엇을하고 어떻게 사용하는지 알고 싶습니까?

아뇨. 개발자가 선택한 언어의 x 또는 y 기능을 사용할 때 장면 뒤에서 일어나는 일에 대해 대략적인 아이디어를 가지고 있는지 확인하고 싶습니다. 그에게 포인터에 대해 물어 보는 것은 메모리 할당에 관해 그가 아는 ​​것에 대해 이야기하게하는 방법 일뿐입니다.
Brann

3
호출 스택, 힙 등에 관한 모든 세부 사항 인 @Brann은 본질적으로 포인터가 적용됩니다 .

3

"듣고 잊어 버렸습니다.보고 기억합니다. 이해합니다." (제 생각에 이해하면 더 나은 기억력이 유지됩니다.)

간단히 말해서, 최근 졸업생은 경험이 많지 않기 때문에 다른 사람이 지적했듯이 "선택한"언어가 무엇이든간에 최소한의 지식 이상을 가질 수는 없습니다.

나는 선택한 전공에 대한 학습을 ​​능률화하기 위해 특별히 고안된 대학에 갔다. (예를 들어, 당신이 CS 전공이라면 역사 문학을 가지고 있지 않을 것이다. 우리가 추상화에 대해 배웠지 만 (그리고 내가 배운 기술 인 .Net에 인터페이스가 풍부하지만) 대학에서 곧바로 인터페이스 추상 클래스와의 차이점 무엇인지 말할 수 없었습니다. 우리는 인터페이스를 다루었을 수도 있지만, 클래스를 통과하는 데 필요한 다른 모든 것들에서 인터페이스를 잃어 버렸습니다. 내가 대학에서 처음으로 일하기 전까지는 인터페이스에 대해, 특히 의미있는 방식으로 알게되었습니다.

프랑스어로 인터뷰하는 것을 언급했는데, 이는 우리가 다른 나라에 있다는 것을 분명히 나타내므로 마일리지가 다를 수 있지만 미국에서는 대학이 기술과 관련하여 시대가 뒤 떨어진 것으로 악명이 높습니다. 따라서 성숙한 언어 (C / C ++, COBOL 등)를 다루지 않는 한, 수년간 사용해온 내용이 학생들이 배운 버전에서 사용하지 못할 수도 있습니다. 예를 들어, .Net 3.0은 Entity Framework, WPF, WCF 및 기타 멋진 것들을 소개했지만 학교에서도 여전히 .Net 1.1 및 2.0 (ADO.NET에 갇혀 있고 Object에 대해 배우지 않음)에 붙어 있습니다. 관계형 매핑). PHP를 사용하는 학교는 (OOP가 아닌) PHP 4에 붙어있을 수 있습니다.

또한 학생은 종종 짧은 시간 동안 만 사용되는 수많은 정보를 가져와야합니다. 추상화와 같은 "고급"개념은 종종 수업이 끝날 때 배우게됩니다. 여기서 학생들은 일주일 정도만 가지고 놀 수 있고 다른 수업과 경쟁 할 수 있습니다. 파트 타임 또는 풀 타임 직업의 상단. 그것들을 모두 합치면 사람이 무엇이든 기억할 수있는 놀라운 일입니다.

미국에서는 적어도 최근의 대학원생은 일반적인 이론과 문제 해결이 주요 부분이라는 것을 이해하기 때문에 일반적인 기본을 넘어서는 아무것도 아는 것으로 종종 가정하지 않습니다. 주어진 언어의 기능을 배우지 않고 학교.

난 당신이 더 당신이 가르쳐 / 다시 가르쳐 그들 (그들이 그냥 배울하지 않았다 전적으로 가능, 기억에 필요한 사항의 계기로 했어 질문을 사용하는 것이 좋습니다 용어 경우에도 사용하려는 것을을 인터뷰 대상자가 "무가치 한"것인지 아닌지와 달리 유비쿼터스라고 생각합니다. 그것들을 배우고 자하는 의지와 일반적인 문제 해결 기술이 어떤지 측정하는 것과 결합하십시오 (진실하게, 해결하기 위해 수수께끼를 제공하고 그들이 어떻게하는지 확인하십시오). "callstack"의 의미를 모르기 때문에 통과했을 수 있습니다.


글쎄, 프랑스에서는 (그리고 대부분의 장소에서 동일하다고 생각합니다.) 모든 CS 커리큘럼에는 C (또는 비슷한 언어)의 필수 코딩이 포함되어 있습니다. .net (OOP에 대해 배우는 곳). 무엇보다, 당신은 많은 분야를 다룰 수있는 많은 일을하지만, 가상 방법이 무엇인지 모르는 채 졸업하면, 그는 자신의 연구를 매우 진지하게 받아들이지 않았다는 것을 의미합니다 ... 제가 졸업했을 때였습니다 ... 시리즈가 무엇인지 모르는 수학 학생에 대해 어떻게 생각하십니까?
Brann

@Brann-컴퓨터 과학이 무엇인지에 대한 나의 (빠른) 연구에 따르면, CS는 프로그래밍 전공이 아닙니다. 그렇습니다. 프로그래밍이 포함되어 있지만 반드시 주요 초점은 아닙니다. 그 문제에 대해 "컴퓨터 과학"은 매우 광범위하고 모호하므로 학교마다 다를 수 있습니다. 스탠포드는 ​​미국 최고의 CS 학교 중 하나이며 가을 및 겨울 코스 선택 목록 ( www-cs.stanford.edu/courses )에는 실제 프로그래밍에만 중점을 두는 것보다 적은 수십 개의 코스가 있습니다 약 50 개의 수업 중 프로그램 이론).
Shauna

이것은 학생이 한 학기 또는 두 학기 동안 주어진 언어를 사용하고 나머지 학생 경력 동안 그 언어를 만질 가능성이 없음을 의미합니다. 또한 로봇 및 유전자 프로그래밍에 대해서도 배우고 있으며 표준 데스크톱 / 임베디드 시스템 / 펌웨어 프로그래밍과는 크게 다릅니다.
Shauna

시리즈가 무엇인지 모르는 수학 학생에 대해 어떻게 생각하십니까? -그것은 학생이 어떤 종류의 수학을 전공했는지와 실제로 무엇을하고 있는지에 달려 있습니다. 다시 말하지만, 학생이 그것을 배웠을 가능성이 있기 때문에 (기술적으로 그것이 무엇인지 아는 것), 암호 나 이산 수학을 일상 생활에서 사용하지 않기 때문에 잊어 버렸습니다. 수학과 프로그래밍은 일반적으로 사용 또는 잃어버린 주제로 간주됩니다.
Shauna

3

당신은 상당히 많은 수의 좁은 견해를 가지고 있으며 암시 적으로 가정합니다.

  • 대학에서 몇 년간 프로그래밍을 공부 한 사람과 실제로 알고있는 사람 사이에 큰 차이가있는 것 같습니다.

    사람들이 몇 년 동안 프로그래밍을 공부하는 대학은 없습니다. 대학은 컴퓨터 공학 과정을 제공하며, 프로그래밍은 한 측면입니다.

  • 참조 유형과 값 유형의 차이점은 무엇입니까?

    경험 법칙 : Lisp가 구별없이 할 수 있다면, 그것은 혼란 스럽습니다.)

  • 기본적으로, 나는 인터뷰 대상자가 콜 스택, 힙 등에 대해 알려주도록 속일 수 있으며 언어에 구애받지 않는 개념을 유지하려고 노력합니다.

    언어에 구애받지 않는 개념에 대해 이야기하는 것이 좋습니다. 힙이나 스택 모두 언어에 구애받지 않습니다.

  • 인터뷰 대상자가 많은 C 또는 C ++ 또는 C #을 수행했다고 말하면 특정 언어와 구현 세부 사항에 대해 자세히 알아 봅니다.

    이 모든 언어에는 사양이 있습니다. 언어에 의해 구현이 정의되지 않습니다. C 및 C ++는 LLVM을 사용하여 크로스 컴파일하여 Flash Player 또는 모든 JavaScript 런타임에서 실행할 수 있습니다. 이것은 힙 및 스택 할당에 대한 가정을 무효화합니다.
    C #에서도 마찬가지입니다. C #은 많은 최적화를 통해 실행되기 전에 JIT되어 있습니다. 클로저에 의해 캡처 된 로컬 변수는 결국 스택이 아닌 힙에 적용되며, 이스케이프 분석은 스택에 저장 될 범위 로컬 객체 (일반적으로 힙으로 이동)를 저장할 수 있습니다. 적절한 레지스터 할당은 또한 스택 할당의 필요성을 크게 줄입니다.

  • 필요한 경우, 인터뷰 대상에게 콜 스택이 무엇인지, 또는 자신이 선택한 명령형 언어로 함수에 전달 된 인수가 저장되는 위치를 묻습니다.

    광범위한 프로그래밍 경험이있는 사람에게 Haskell과 관련하여 무엇을 물어 보겠습니까? :피

  • 인터뷰 대상자 대부분은 복싱 고려 사항은 물론 콜 스택이 무엇인지 전혀 모릅니다.

    오토 박싱의 기본 개념은 프리미티브가 객체로 처리 될 수 있다는 것입니다. 이러한 추상화와 관련하여 세 가지 유형의 언어가 있습니다.

    1. 존재하지 않는 사람들. Objective-C가 정식 예제라고 가정합니다.
    2. 그것이 진정으로 보유하고있는 사람들
    3. 존재하지만 보유하지 않는 사람들. 내 생각 자바가 가장 좋은 예이다 (나는 그것이 지금까지 수정되었습니다 가정 것).

    사람들이 왜 카테고리 1의 언어를 사용해서는 안되는지 모르겠습니다 (실제로는 좋은 생각입니다). 카테고리 2의 언어를 사용하는 사람들이 왜 실제로 귀찮게해야하는지 모르겠습니다. 그리고 나는 범주 3의 언어, 즉 핵심 의미 기능이 단순히 깨지는 언어를 사용하는 모든 사람들이 잘못된 언어를 사용하고 있다고 생각합니다.

  • 추상 클래스와 인터페이스의 차이점은 무엇입니까? 어떤 경우에 다른 것을 사용해야합니까?

    이제는 매우 주관적이고 언어에 달려 있습니다. C ++에는 인터페이스가 없습니다. Objective-C에는 추상 클래스가 없습니다. 나는 둘 다 가진 언어는 재 설계가 절실히 필요하다고 주장한다. 많은 현대 언어는 특성, 믹스 인, 카테고리, 역할 및 유사한 구성을 사용하여 부분 구현의 상속보다 코드 재사용을위한 훨씬 더 깨끗한 솔루션을 제공합니다. 어쨌든 프로토 타입 기반 언어에는 클래스가 없습니다.

    궁극적으로 이것은 어렵고 논쟁의 여지가있는 주제입니다. 인터뷰는이 문제를 해결하기에 적절한 장소가 아니며, 저에게 좋은 대답을주지 않는 주니어 입장을 신청하는 사람은 없습니다.

  • 인터뷰 대상자 대부분은 상속의 실제 목적이 무엇인지 전혀 모릅니다. 그들은 일반적으로 일부 키워드 (가상, 재정의 등)를 알고 있지만 가상 테이블이 무엇인지 설명하지 않고 키워드를 언제 사용 해야할지 실제로 알지 못합니다.

    상속 또는 클래식 vtable을 사용하지 않는 많은 객체 지향 언어가 있습니다.

내 조언 :

  • 매우 프로그래밍에 대해 알고 아무것도 정말 가정에주의 기본적인 프로그래밍 개념. 모든 훌륭한 프로그래머는 그러한 질문에 대한 답을 찾기위한 호기심이 있다고 가정 할 수 있습니다. 그러나 당신은 그들을 아는 사람이 좋다고 가정 할 수 없습니다. 나는 그러한 세부 사항에 너무 많은 중요성을 부여하는 사람들은 실제로 나무의 숲을 보지 못할 것이라고 믿는 경향이 있습니다.
  • 구현 세부 사항에 대해 덜 걱정하십시오. 프로그래밍 언어는 추상화를 생성하기위한 것입니다. 이러한 추상화와 그 관점에서만 생각하면됩니다. 좋은 코드는 언어의 구현 세부 사항에 대해 작성되지 않았습니다. 솔루션의 의미를 언어 기능에 가장 잘 포함시키기 위해 작성되었습니다. 그렇게하면 코드가 강력해질뿐만 아니라 언어에 익숙한 모든 사람이 읽을 수 있으며 컴파일러에 대해 쉽게 최적화 할 수 있습니다.
  • 기대하는 답을 아는 것은 그리 중요하지 않습니다. 그것들을 이해하는 것입니다. 누군가가 단지 그것을 알고 있다면, 그들은 교과서에서 읽었거나 교수가 말 했으므로 가치가 거의 없습니다. 실제로 당신은 그 모든 것들을 몇 시간 안에 자신에게 설명 할 수 있습니다.
    중요한 것은 이러한 단순하고 고립 된 사실이 복잡한 문제에 대한 유연하고 유지 관리 가능한 솔루션 엔지니어링에 어떻게 적용될 수 있는지 이해하는 것입니다.

실제 질문에 도달하려면 :

저의 회사가 재능있는 인재를 유치하는 데 문제가 있거나 자신의 채용 과정에서 같은 종류의 문제를 경험하고 있다고 생각하십니까?

대기업을 제외한 모든 회사에는 숙련 된 사람들을 끌어들이는 문제가 있습니다. 그중 몇 개가 없기 때문입니다. 그리고 그 가정 때문에 대학은 사람들을 능숙하게 만듭니다. 그렇지 않습니다. 그것은 학생들에게 지식을 제공합니다 (학생과 대학 모두가 거래의 일부를 유지한다고 가정). 경험은 사람들을 능숙하게 만듭니다.

대학에 진학하기 전에 경험을 쌓은 사람이 있고 공부하는 동안 몇 사람이 있습니다. 그들은 프로그래밍을 좋아하고 코스 중에 새로운 아이디어를 얻었을 때 처음으로 집으로 돌아 오는 방법을 사용하려고 시도합니다. 이것은 당신이 고용하고 싶은 사람들의 종류입니다. 그러나 그중 몇 가지가 있습니다.
프로그래밍과 자기 개선에 대한 열정과 프로그래머의 선구자 추구. 제 시간에.

슬프게도 대부분의 사람들은 충분한 프로그래밍 경험없이 대학에 들어오고 나갈 것입니다.
동시에, 우리 업계는 숙련 된 프로그래머가 필요로하지 않습니다. 따라서 저는 실제로 들어가기 위해 노력하는 것이 우리 업계의 사명이라고 생각합니다. 그리고 주니어 포지션 후보를 인터뷰 할 때, 현실적으로 찾고있는 것은 배우고 개선하려는 사람들입니다. 그리고 많은 에너지를 투자해야하고 낭비하기를 원하지 않기 때문에 신중하게 선택해야합니다.

레이싱 팀의 운전자가되기 위해 신선한 피를 사용하는 것으로 생각하십시오. 좋은 운전자는 자신의 차를 최대한 활용하기 위해 기계공을 충분히 이해하고 있지만이 지식만으로는 아무 소용이 없습니다. 스타트). 당신이 찾고있는 것은 자신의 개선을 위해 기꺼이 노력하고 팀과 잘 일하는 사람입니다.


1

단서가없는 "즉시 유형"이라는 용어에 관계없이 (값 유형? OK, 확실하지 않습니다. 업데이트 해 주셔서 감사합니다), 귀하의 질문에 대해 옳고 극단적 인 것이 아니라고 생각합니다. 이것은 학교에서 바로 나오는 경우에 대답 할 수있는 질문입니다. 아직도, 나는 후보자를 즉시 ​​기각하지 않을 것 입니다. 그들이 배우고 싶어 하기 때문에 잠재력을 가질 수있는 것들이 여전히 있습니다 .

운전 면허증 비유를 계속하려면 : 어떤 사람들은 키를 삽입 할 때 어떤 일이 일어나 든 상관하지 않거나 "시작"버튼을 누릅니다. 그들은 단지 그것을하고 운전합니다. 이것은 그들이 무가치하다는 것을 의미하지는 않으며, 그들이 별에 도달하는 데 시간이 걸린다는 것을 의미합니다. ;-)

학위 / 디플로마에 대한 개인적인 언급 : 저는 현재 IT 분야에서 몇 년의 경험을 가진 생화학 및 산업 배경을 가진 사람들과 CS 경험이있는 "경험이 많은"사람들과 함께 일하고 있으며 가장 지식이있는 사람을 추측합니다. 차량 엔진의 작동 방식에 대해 예, CS를 공부 한 사람은 아닙니다! 그래서 나는 졸업장이 항상 중요하지 않다는 사실을 경험하고 있습니다!


2
어떤 사람들은 자신의 차량을 최고 속도로 만들기 위해 너무 오래 땜질을 할 수 있으며, 느린 사람들은 시작하기 전에 끝냈습니다.

충분히 공평 :-)
Jalayn

CS 이외의 분야에서 온 사람들에 대해서는 전적으로 동의합니다. 그러나 실제로 CS 학위를 소유 한 사람에게는 가치 유형이 무엇인지 알지 못하는 것이 조금이라도 걱정이 될 것 같습니다.
Brann

@brann은 용어를 알지 못하지만 변수가 보유한 데이터의 실제 배치는 힙 또는 스택이 아닌 데이터 세그먼트에 배치된다는 것을 여전히 알고 있습니다. 이것이 중요한 것으로 보이는 언어는 무엇입니까?

나는 C #을 사용하고 있습니다. 그리고 나는 이런 종류의 구현 세부 사항을 아는 것이 그 상황에서 중요하지 않을 수도 있음에 동의합니다 (일부 특정 상황에서는 가능할 수도 있음). 문제는 AC # 전문가를 찾으려고하지 않는다는 것입니다. 나는 누군가가 영리하고 C #으로 코딩하는 데 능숙하게 동기를 부여하려고 노력하고 있습니다. 어떤 가치 유형을 배우거나 이해하는 데 신경 쓰지 않는다면, 나는 적어도 그가 그 두 가지 특성 중 하나를 그리워한다고 생각하는 경향이 있습니다.
Brann

1

나는 일반적으로 인터뷰 중에 용어 나 정의에 대해 구체적인 질문을하지 않습니다. 다른 답변에서 알 수 있듯이 사람들은 개념에 따라 용어가 다르며 주제를 개념적으로 이해할 수는 있지만 그 사실을 당신에게 전달하지 못할 수도 있습니다.

주니어와 함께 인턴십이나 학교 프로젝트에 집중하고 있습니다. 나는 그들에 관한 질문에 대해 질문을하고, 답변을 명확하게하고, 그들이 프로젝트에 실제로 참여한 것, 그들이 배운 것, 느낌을 더 깊이 파고 들기 시작합니다.

일반적으로 프로젝트에서 체중이 줄어든 사람은 일반적으로 나에게 만족스러운 답변을 줄 수 없으므로 일반적으로 말하기가 쉽습니다. 무관심하고 관여하지 않은 사람을 긴장하고 내성적이라고 착각하지 않도록 조심하십시오.

수줍고 내성적 인 좋은 후보자를 결정하는 것은 조금 어렵지만, 내가 일하는 문화는 내성적이고 수줍은 개발자에게는 좋지 않으므로 나와 생산적인 세부 대화를 할 수 없다면 적합하지 않습니다.


1
 or chose his university very unwisely.

그건 매우 불공평. 당신이 학생 일 때, 당신이 할 수있는 모든 것은 당신의 성적이 당신을 얻을 수있는 가장 높은 순위의 대학을 선택하는 것입니다. 더 이상 없습니다. 대학 과정을 수료 한 후에 만 ​​평가 한 다음 몇 년 동안 산업계에서 일하고 사소한 프로젝트를 만들 수 있습니다.

"우리는 전화 추적을 가르치지 않습니다"라고 말하는 모든 코스에서 네온 사인을 번쩍였다하더라도 학생들은 어떻게해야합니까? 그들이 무엇을 의미하는지, 그것을 가르치는 사람이 얼마나 필요한지 실제로 이해할 수 있도록 몇 달 동안 그것을 연구하십시오. 모든 표지판 조합과 함께 모든 코스에?

사람들은 현실적으로 교육을 선택할 수 없습니다.


0

새로운 졸업생들을 인터뷰 할 때 나는 이력서에 열거 된 주제를 고수합니다. 그들이 Java를 사용했다면 Java에 대해 물어볼 것입니다. 그들이 Blub를 사용했다면, 나는 30 분 동안 Blub에 관해 읽고, 그것에 대해 물어 봅니다. 그러나 나는 항상 언어 키워드를 사용하도록 요청합니다. Java 인 경우 "확장"및 "구현"에 대해 묻지 만 "하위 클래스"및 "상속"은 묻지 않습니다. 새로운 졸업생들이 작성한 코드에 대해 이야기하고 간단한 프로그래밍 문제를 해결하고 기본 데이터 구조 (해시 테이블 및 트리)를 파악할 수 있기를 기대합니다.


0

인터뷰 과정을 디자인 한 디렉터로서 우리 회사가 새로운 졸업생들에게 기대하는 바를 채워 줄 수 있습니다. 나는 문서를 읽고 지식을 적용 할 수있는 사람들을 기대합니다. 따라서 우리는 수행하도록 요청하는 작업에 대해 몇 가지 직접적인 의견을 가지고 있습니다. 이것은 간단한 코딩 작업으로, 일반적인 대학 수업보다 훨씬 어렵지 않습니다 (경험이 많은 "좋은"개발자가 약 15 분 안에이를 중단시킬 수 있습니다). 지원자는 인터넷 액세스가 가능한 워크 스테이션, 컴파일러 (이 경우 Visual Studio) 및 도움말 파일이 제공됩니다.

이러한 조건에서 코드를 작성할 수 없으면 고용을 고려하지 않습니다. 그렇게 간단합니다. "언어를 잘 모르겠다"라는 변명은 여기서 면접을 보러 오는 모든 후보자들이 시험이있을 것임을 알기 때문에, 우리가 먼저 사용하는 언어와 도구를 알고 있기 때문에 저와 함께 간절히 원했던 적이 없습니다. 집에서 Visual Studio Express를 다운로드하고 들어 오기 전에 몇 가지 기본 사항을 수행하고 귀찮게하지 않는 엔트리 레벨 테스트를 통과 할 수 있습니다 ... 그것이 내가 적기라고 부릅니다.


이것은 실제로 무언가를 사용하기에 충분히 잘 알고 있다고 주장하는 사람을 찾는 가장 좋은 방법입니다. 교실 밖에서 거의 사용되지 않는 용어의 의미를 묻는 것은 무의미합니다. 지난 18 개월 동안 참조 유형대한 토론을 한 번도하지 않았지만 포인터와 관련된 것에 대해 불평했을 수 있습니다.
Ramhound
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.