…이 뭐가 있을까하는 중.
어제 저녁에 Azyu 님이 내일 (오늘 기준으로 내일) NHN 공채 pre-test를 본다고 뭐가 나올 것 같냐고 물으시길래 내가 봤던 시험 얘기, rica, 아사 등등의 얘기가 나왔었다.
대충 C/C++ 관련된 얘기로 나온게, (그러니까 이건 총집편)
- extern “C”의 의미
- C++으로 swap 짜기 ((어이없게도(…) 공채에서 이걸 맞게 푸는 사람의 비율은 30% 정도. 그리고 다시 그 중 1/3 정도는 template으로 짜버린다고))
- virtual 함수의 의미
- 가상 소멸자의 필요성 or 가상 생성자가 불가능한 이유
- binary search ((종이 위에서 짜는 걸로 이만큼 어려운건 드물다고 생각함; 하지만 나는 컴퓨터 구조 시간에 배우는 binary 곱셉/나눗셈을 종이 위에 짜는 입사 테스트도 봐 봤다 -_-))
- 문자열 뒤집기 (이건 C문제?)
이 정도였는데. 사실 이거 Effective C++ 만 정독해도 다 풀수있는데 이런 문제로 걸러낼 수 있다는건 전반적인 C/C++ 지식 없이 사회에 나오게 된다는 소리 같은데 ((뻘소리지만, C++은 몰라도 — 패러다임이 좀 많으니 -_- — C는 알고 오는게 자기 발 밑에 무엇이 있나를 알기 위해 배워두는게 좋지 않을까 한다. 물론 Java, .net 처럼 라이브러리 구성이 잘된 언어의 라이브러리 구성 방식을 보는 것도 좋고, Ruby, Python같은 현 시대의 스크립트 언어도 알면 좋겠지만… 배울게 많긴 한가)). 여튼 프로그래밍 언어 쪽에만 한정적으로 말하면 이 정도 수준이 아닐까. ((라지만 나나 내 동기들을 통해서 얻은 정보는 N모 사들 정도로 한정된다는게 문제지만…))
회사라는게 의외로 사용하는 언어의 스펙트럼이 넓다. NHN의 예를 들어보자면 bash shell script로 돌아가는 서비스 뒷단도 있다고하고, 그 위에는 python도 돌리고, 아파치 모듈은 C나 C++로 짜게되고, Java도 하고, 약간이지만 .net 환경도 있다고…
비슷하게 내가 있는 N 모사에서도 나 자신의 경우에는 주로 C++을 쓰고, 작업에 따라서 python을 쓰거나, 스레딩 위에서 돌리면 lua도 쓰고 그러는데, 다른 곳을 보면 JSP가 쓰이기도 하고, Java runtime위에서 돌기도하고 .net도 쓰고 C도 쓰고(…)
그런 의미에서 많이 사용되는 언어 질문도 하지만 전공 전체의 기초가 되는 질문들도 많이 할 수 밖에 없다. (저걸 다 배우고 나타나는건 별로 의미도 없는 것 같고) 그런 즉슨, 여담이 뭔가 길어지지만, 아직 학교에 있다면 이걸 다 배우는 것보다는 기초에 전념하자. OS, DB, 네트웍, 컴파일러, 알고리즘 이런 거 회사와서는 못배운다. 알고 와도 새로 배울게 많다 — 실무를 접하면서는 더더욱.
여담으로, 내가 현재 회사 입사시험 때 풀었던 것은, 저 위에 없다 :P
저라면 “상위 클래스의 소멸자는 반드시 가상이어야 하는가?” 도 물어볼 것 같습니다.
… 물론 정답은 No 죠.
그러니까 그것도 EC++ 수준의 내용이잖(…)
어랏…부모클래스의 소멸자는 가상이어야…되지않던가요 -ㅁ-;; EC++에서 읽었던거 같은데;;;
아참…그리고 Mail 란을 비워뒀을때…HTTP 500 에러가 나네요…^^;
swap쪽은…일반적으로 템플릿함수의 example로 워낙 적합한 케이스라서 -ㅁ-;; 어쩔수없는걸요 ㅋ
kalstein / 부모 클래스가 일종의 인터페이스로 동작할 때 – 부모 클래스를 상속받아서 쓰는 클래스가 외부에 노출될 때 – 만 그렇습니다.(=virtual 소멸자가 필요합니다)
상속 받을 이유가 없는 클래스(이건 좀 아리까리하지만 std::string 구현이 그렇지요), 혹은 상속 받아도 부모 클래스의 인터페이스로 쓸 이유가 없는 경우(boost::noncopyable 같은 경우)에는 가상으로 만들이유가 없습니다.
HTTP 500에러는…왜 나는 걸까요(…). 좀 더 원일을 찾아봐야하는데, 얘가 개발버젼인 WP라서 Orz
rein님께서 WP를 수정하시는 open source에 지대한 공헌을 해보심이… 후다닥 ;;;;ㅡ _-;
WP 문제가 아니라 아파치 권한 설정 — 관리자 디렉토리를 암호 입력해야 접근하게 했던 것 — 문제네요.
근데 원래 comment 날릴 때 wp-admin을 접근안하는 코드였는데 언제 이렇게 된건지는 -_-;
모든 상위 클래스의 소멸자는 가상이어야 하는가?…
C++ 의 모든 base class 의 destructor 는 꼭 virtual 이어야 할까요?
당연한 이야기지만 정답은 “아니다.” 입니다.
polymorphic base class 의 경우는 그래야겠지만 단순히 base class 라면 꼭 그럴 필…..
저거 몇 년 전에 rein이 있는 N모사에 면접볼 때 질문 받았던 것들인데..아직도 저런거 물어보네..ㅡㅡ;
여담이지만 면접관 4분이 1명/30분씩 돌아가면서 1:1 면접하는데
한 아저씨만 저 위의 C++관련 질문들만 줄기차게 하고
나머지 두 아저씨는 전직장의 영업 기밀들 물어보고
나머지 한 아저씨는. 아예 질문을 안 하셨음.
대신 30분동안 공돌이의 신세 한탄 하시면서,
병특 끝나면 공돌이 생활 때려치고 의대 진학하라고 충고해줬음.
N모사 면접 재밌던데.ㅡㅡ;
jewoo / 형, 근데 저 위에서 제가 받은 질문은 한 개도 없어요.
분당 N모사랑 선릉 N 모사에서 뽑은 질문임[…]
rein/ 그 아저씨가 계속 전직해서 저런거 묻고 다니는 거 아냐? ㅋㅋㅋ
jewoo / 그건 좀 무섭네요(…)