삶은걀달
20
2019-01-24 19:31:41 작성 2019-01-24 19:39:32 수정됨
18
3239

이런 면접 질문 받으시면 뭐라 하실건가요?



"객체지향이란 무엇입니까?"


아직 주니어 개발자라 뭔가 떠오르는듯 하면서도 잘 정리가 되지 않아 선배님들께 여쭙고 싶습니다.



0
  • 댓글 18

  • 삼이
    1k
    2019-01-24 19:34:35

    시니어요?

  • 검은오리 
    102
    2019-01-24 19:37:20
    단답형으로는 모듈이 떠오르네요 :)
  • 삶은걀달
    20
    2019-01-24 19:39:52

    아 주니어를 잘못썻네요..

  • vollfeed
    1k
    2019-01-24 19:40:10

    모르면 주니어겠죠

  • BulletproofCupid
    2019-01-24 19:49:49

    인터넷 검색 없이 당장 떠오르는 건 데이터와 관련 메소드 집합인 객체로 프로그램 단위를 기능별로 분리해 그 객체간의 상호작용을 이용해 프로그램을 구성한다? 

    글쎄요 당장 알 수 있는 건 제가 허접이라는 것 밖에 없네요 ㅠㅠ

  • 코드 똥싸개
    302
    2019-01-24 19:52:00

    객체를 지향하는겁니다?!

  • ECMA
    620
    2019-01-24 19:56:08

    뭐 모든 프로그래밍의 단위를 객체라는 것으로 파악하고 객체란 무엇이냐면 속성과 동작을 동시에 가지는 단위이고 객체를 단위로 하면 장점은 현실세계를 모사할 수 있고 그러면 현실세계를 객체로 표현하면 자동차를 객체라고 한다면 자동차는 색깔 크기.등의 속성을 가지고 전진 후진등의 동작을 가질 수가 있고 객체 단위로 정의를 하면 객체를 사용해서 재사용성이 높아지고 그 재사용성을 높일 수 있게 사람들이 정의해놓은 패턴 이야기를 하면 Gang of four 이야기를 할 수 있고 그게 디자인 패턴이라는 이야기를 하면서 각 디자인 패턴을 쓰면 마주한 문제를 어떻게 효과적으로 해결하는지 이야기 할 수 있고

    객체는 가장 널리쓰이는 클래스 기반의 객체지항 프로그래밍에서 클래스라는 설계도를 통해서 정의되고 그 설계도를 인스턴스화 시켜 사용하고 상속을 통해서 상위 객체의 속성을 가져다 쓸 수 있고 인터페이스를 구현해 상호작용에 필요한 공통 동작을 정의할 수 있고 

    그렇게 프로그래밍을 할 때 지켜야 하는 원칙으로는 객체 하나는 책임 하나를 지게해야한다 외부에 노출될 것과 감출 것을 구분해야 한다 하위 객체는 상위 객체의 타입으로 치환될 수 있어야 한다. 공통 동작은 인터페이스로 구현되어야 한다. 프로그램을 작성할 때 객체는 특정 동작에 강하게 결합되지 않고 유연하게 사용될 수 있게 의존성을 주입할 수 있도록 작성되어야 한다 이런 이야기를 할 수 있겠고 여기서 강한 결합이 무엇이고 이런 게 왜 나쁘고 그럼 결합도를 낮추면서 공통된 동작이 잘 응집된 코드가 무엇이고

    의존성주입이 쉽게 그것의 세부명세와 실제 클래스 및 객체사용과 관리를 역전해서 사용할 수 있도록 만들어진 프레임워크의 예시로 스프링프레임워크의 예제를 들 수 있겠고 거기서 빈이 무엇인지 XML로 빈을 설정하는 것과 자바컨피그로 빈을 설정하는 것을 들 수 있겠고 여기서 관리되는 대상이 순수 자바클래스라는 것을 예로 들면서 왜 스프링이 널리.퍼지게 되었는지 예전엔 어떻게 써서 불편했는지 이런 이야기를 하다보면 JAVA EE 이야기로 가겠죠

    사실 이런 이야기 줄줄해서 책 한 권을 쓰는 사람도 있으니... 그래도 뭐 이런 걸로 그 자리에서 꽤 이야기하려면 할 수 있겠지요 주니어 때 전부 알기는 무리고 몇 년을 해도 사실 다 알시가 힘든 일이니 끊임 없이 해야죠

  • fender
    18k
    2019-01-24 19:56:38

    저는 면접 볼 때 저런 식의 질문을 자주하는 편은 아니지만 한다면 어떤 정답을 정해놓고 거기서 벗어나면 떨어뜨리겠다는 생각으로 물어보진 않습니다.

    저런 류의 질문은 정답 맞추기를 하기엔 암기력 테스트 이상의 의미는 없지만, 관련 주제로 대화를 이끌어내는 데는 나름의 유용성이 있는 듯 합니다.

    예를들어 윗분이 말씀하신 "데이터와 관련 메소드 집합인 객체로 프로그램 단위를 기능별로 분리해 그 객체간의 상호작용을 이용해 프로그램을 구성한다"라는 답을 얻는다면, 혹시 본인이 작성했던 코드 중에 그런 식으로 기능을 분리해 구현한 내용이 있으면 소개해달라거나, 아니면 "그럼 같은 파일에 비슷한 기능을 하는 변수와 메서드를 모아 놓으면 객체지향이라고 할 수 있는가"와 같이 반문해 본다던지 하는 식으로 대화를 이끌어 가면 지원자의 실력을 가늠하는데 좀 더 유용한 대화가 될 수 있습니다.

  • 나도아빠다
    2k
    2019-01-24 20:06:15

    와 어려운 질문이네요...


    전 단순히 함수로묶던 프로그래밍을 오브젝트로 나누어서 관리하는 프로그래밍방법...이라고 답할거같군요


  • asd
    16k
    2019-01-24 20:07:59

    저도 fender 님이랑 비슷한 의도로 물어봅니다.

    맞고틀리고를 떠나서 앞에있는분이 그런 고민을 해봤는지, 저랑 생각이 다르다면 어떤 생각을 갖고있는지 알고자하는 의도로 물어보죠.

    물론 면접자가 그런고민을 안해봤다고해서 안좋게보지도않습니다. 제가 질문할건 아직 많으니까요.

    물론 제가 드리는 질문에 거의대부분을 고민해본적이 없다면 면접자가 실제로 뛰어난분일지라도 저랑은 관심사가 맞지않다고 판단하겠죠.

    전 그래서 면접은 면접관이랑 면접자의 교집합을 찾는자리고, 둘의 궁합이 잘 맞는게 중요하다고 생각해요.

  • 엔카나
    552
    2019-01-24 20:10:00

    저도 그 질문 받아봤는데ㅋㅋㅋ...

  • 하두
    11k
    2019-01-24 20:22:49 작성 2019-01-24 20:23:03 수정됨
    쌍둥이 이름 부르는거죠.
  • 겨울눈사람
    45
    2019-01-24 20:44:00

    객체지향이랑 대비대는 절차지향 개념을 같이 가져와서 비교하면서 설명하는것도 좋을것 같아요 ㅎㅎ 잘 기억안나면 자기가 써본언어 중에서 절차지향과 객체지향인 언어들의 특징을 떠올려보면서 설명하는 뭐그런..? 절차지향의 대표적 언어로 C 같은거 소개하고 객체지향 언어중에서도 C++이나 java같은거 소개하고하면 좋지 않을까하는 생각이 듭니다 ㅎ

  • 하마
    6k
    2019-01-24 20:52:13 작성 2019-01-24 22:05:35 수정됨
    @ 자유를 속박하고 표현을 정형화 시키기 위한 그럴싸한  포장술. 
    @ 정형화의 성공예. 공동쟉업하기 좋다.
    @ "진정한 객체지향을 몰라서 그래" 란 도시괴담이 있음. 자매품 "진정한 함수형을"  "진정한 맥주맛을" 

    ㅡ 네 탈락하셨습니다. :-) 
  • ceastgun
    2k
    2019-01-24 22:48:49 작성 2019-01-24 22:50:38 수정됨

    큰 프로그램 개발에 있어서

    중복 코드를 줄이고

    코드 재활용을 높이고

    난이도를 낮추기 위한

    구조적인 개발방법론입니다.

  • yeori
    1k
    2019-01-25 00:03:21

    좋은 질문같지는 않네여...

  • 내누알
    546
    2019-01-25 10:49:15

    SOLID를 고려한 아키텍쳐를 지키며 하는 프로그래밍이라고 생각합니다.

  • 자바몬
    15
    2019-02-10 22:51:19

    전 구냥 객체지향이라 함은 머 ㅋㅋㅋ

    "프로그램을 객체 단위로 설계하여 개발하는 것" 이라고 얘기 할것 가틍데여 ㅋㅋ

    개발자는 철학자두 아니구 문학자두 아니라구 생각해염


    막 "아 객체란 무엇인가?" "객체란 진리는 어떻게 찾아야 하는가?" 이런 고민을 하기보다는

    자신이 원론적인 의미를 이해한 바탕으로 어떻게 자기 프로젝트에는 어떻게 구현했는지를

    부수적인 설명으로 넣을것 같아염

    "이전 프로젝트에선 요론 요론 요론 객체, 저런 객체 구성하구 메세징은 이렇게 저렇게 해서 구현했어용"


    구현한게 이런 저런 디자인패턴을 활용하였다나 유사하다라고까지는 안할듯염

  • 로그인을 하시면 댓글 을 등록할 수 있습니다.