ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • IT동아리 기술면접 질문 정리(CS기초 지식)
    자격증 및 대외활동 2021. 3. 1. 03:45

    지원했던 IT동아리들(2개밖에 없지만...ㅎ)의 경우 거의 프론트쪽/객체지향 언어 사용하는 쪽의 직군으로 넣었었기 때문에 면접질문이 그런쪽에 치우쳐져있다. 사실 면접보자마자 기록해놨어야 생생하게 기억나는데 오래된 면접도 있기 때문에... 생각나는 대로 기록해두려 쓰는 포스팅..! 나중에 또 다른 면접볼때 쓰일 수도 있으니까... :D

     

    <IT동아리 안드로이드 파트 면접 기술질문> - 좀 오래되어서 기억 가물가물...

     

    1. 객체지향언어에서의 객체의 정의

    -> 필드와 메소드로 구성이 되어있는 소프트웨어의 묶음이라고 설명할 수 있다. 필드는 객체의 변수, 즉 상태를 저장하며 메소드는 객체의 함수, 즉 객체의 행동을 정의한다. 

     

    2. 클래스의 정의? 클래스와 객체의 차이점이 무엇인가

    -> 클래스는 객체에 대한 설계도라고 설명할 수 있다. 클래스에 의하여 각 객체들이 생성되고, 이 만들어진 객체들을 그 클래스의 인스턴스라고 정의할 수 있다. 클래스는 하나가 존재하지만, 클래스로 만들어진 객체는 여러개 생성할 수 있다. 

     

    3. 객체지향 프로그래밍 특징 4가지

    • 캡슐화 : 기본적으로 연관된 필드와 메소드를 하나의 객체로 묶어 사용한다는 뜻이다. 캡슐화에는 2가지 목적이 있는데, 첫 번째로 관련된 데이터와 알고리즘들을 함께 묶음으로써 개발자로 사용이 편리하게 하기 위해서이고, 두 번째로는 정보 은닉의 목적으로, 일부 정보들만 공개하고 내부를 은닉시킴으로써 객체의 실제 구현 내용을 외부로부터 감추기 위한 목적이 있다. 
    • 상속 : 상위 개체의 속성이 하위 개체에 전달되어 하위개체가 상위개체의 속성을 가지는 것을 의미한다. Java의 경우 부모클래스로부터 상속받은 자식클래스는 부모 클래스의 기존 코드를 재사용할 수 있으며, 필요한 기능을 추가하여 확장이 가능하다는 특징이 있다. 
    • 다형성 : 같은 이름의 메소드가 클래스 혹은 객체에 따라 다르게 동작하도록 구현될 수 있는 것을 의미한다. 부모클래스에서 구현된 메소드를 자식클래스에서 동일한 이름으로 자신에게 맞게끔 다시 구현하는 오버라이딩, 그리고 클래스 내에서 이름이 같지만 서로 다르게 동작하는 오버로딩이 해당된다. (★ 참고로 오버로딩/오버라이딩 개념은 다른 동아리 질문에서도 나왔었다!)
    • 추상화 : 공통되고 핵심적인 속성만 추출하여 프로그램을 간단히 만드는 기법이다. 공통적인 필드와 메소드만을 추출하여 묶음으로써 복잡도 관리가 가능하다. Java의 경우 추상클래스, 추상메서드를 통해 서브클래스가 구현해야할 메서드를 명확히 알려주는 인터페이스 역할을 하며 다형성을 실현할 수 있다. 

    4. 접근 지정자의 정의와 그 종류? 

    -> 접근지정자는 클래스나 멤버들을 다른 클래스에서 접근이 가능한지의 여부를 선언하는 지시어로 객체지향언어에서는 객체를 캡슐화하기 때문에 다른 객체의 접근을 제어하기 위해 사용한다. private, protected, default, public 이렇게 4가지 종류가 존재한다. public의 경우 패키지 상관없이 외부에서 자유롭게 접근이 가능함을 의미하고, default의 경우 동일 패키지 내에서만 사용이 가능하다. protected의 경우 같은 패키지의 클래스와 다른 패키지의 자식 클래스까지 접근이 허용되며 private의 경우 동일 클래스에서만 접근이 가능하다. 

     

    5. 생성자

    -> 생성자는 객체가 생성될 때 객체를 초기화하는 특수한 메서드를 의미한다. 객체가 생성될 때 필요한 초기작업을 진행하는데 그 목적이 있으며 클래스 이름과 동일하되 리턴 타입을 지정할 수 없으며 오버로딩이 가능하고, 객체를 생성할 때 한번만 호출된다는 특징을 가진다. 

     

    6. static과 final의 차이

    -> static멤버는 클래스 하나당 생성되는 멤버로써 동일 클래스의 모든 객체들이 공유하고, 객체를 생성하지 않고도 사용이 가능하다. 클래스 당 하나씩 생긴다고 해서 클래스 멤버라고도 부른다. 전역변수 및 함수, 공유 멤버등을 만들 때 활용된다. 또한 static 메소드의 경우 객체 없이도 존재하기 때문에 static멤버들만 사용할 수 있으며, this를 사용할 수 없다. 

    -> final로 필드를 선언할 경우 필드는 상수가 되어 한번 초기화되면 그 값을 변경할 수 없으며, final 메서드의 경우 오버라이딩할 수 없다. final클래스의 경우 이 클래스를 상속받아 자식클래스를 만들 수 없다. 

     

    = 정리하자면 static은 메모리 상에 한군데에만 존재하는 변수를 의미하고 final은 초기화 될 경우 그 값이 변경, 상속받아질 수 없음을 의미한다. 

     

    cf. static final의 경우 2가지가 합쳐져서 선언과 동시에 초기화가 되어 그 값을 변경시킬 수 없고 객체를 생성하지 않아도 접근이 가능한 변수를 의미..

    cf2. 전역변수와 static(정적변수)의 차이,,, 내가 궁금해져서 찾아봤다. 프로그램이 죽을때까지 유지되는 생존주기는 같지만 static의 경우 해당 함수 내에서만 접근이 가능하고 전역변수의 경우(global) 접근이 자유롭다. 

     


    <Unity 동아리에서 받았던 기술 면접 질문> - 면접시간 자체가 짧았다. 그래도 기억나는 질문 위주로 적어봄...

     

    1. 오버로딩과 오버라이딩 차이?

    -> 오버라이딩의 경우, 부모클래스로부터 상속받은 메서드를 서브클래스에서 재작성하는 것을 의미한다. 같은 이름, 같은 리턴타입, 같은 매개변수 리스트를 갖는다. 오버로딩의 경우, 동일 클래스 혹은 상속관계에서 메소드 이름은 동일하되 매개변수의 개수나 타입이 다르게 작성되는 것을 의미한다. 


    2. 연결리스트에 대해 설명해주세요

    -> 리스트는 동일한 자료형으로 된 원소들의 모임을 의미하며, 선형리스트와 연결리스트 2가지 종류가 있다. 이 중 연결리스트의 경우 프로그램 실행 중 동적으로 생성되거나 삭제되어서 크기를 미리 예측할 필요가 없다는 특징을 가지며, 논리적으로는 이어져있지만 물리적으로는 분산되어 있는 구조를 갖는다.


    3. sprite랑 raycast차이?

    -> sprite는 2D그래픽 오브젝트로 스탠다드 텍스처라고 생각하면 된다. 에디터를 통해 하나의 텍스처 내에서 여러개의 컴포넌트 이미지를 편집할 수 있다. Raycast의 경우 광선을 발사하여 일정 거리 이내의 오브젝트를 판별해내는 기능을 하는 Physics클래스 static메소드로 객체 생성 없이 바로 사용이 가능하다. 


    4. update함수와 fixed update차이?

    -> update함수는 매 프레임 당 1회씩 호출되는 함수이고 fixed update함수는 특정 시간 기준으로 호출되는 함수로, 프레임과는 독립적인 시간간격으로 호출된다. 

     

    5. awake함수와 start함수의 차이
    -> Awake함수는 스크립트가 비활성화 되어있어도 호출되는 함수이며, 오브젝트를 초기화할때 많이 사용된다. Start함수의 경우 스크립트가 비활성화 되어 있다면 호출되지 않는다. 실행순서는 Awake함수가 먼저 실행된 후 Start함수가 실행된다. 추가로, Awake함수도 오브젝트가 비활성화 된 경우에는 호출되지 않는다. 

     


    < 답변을 작성할때 참고한 링크/문헌 >

    docs.unity3d.com/kr/2018.4/Manual/index.html

     

    Unity 사용자 매뉴얼(2018.3) - Unity 매뉴얼

    Unity 에디터를 사용하여 2D 및 3D 게임, 앱 및 경험을 만들 수 있습니다. unity3d.com에서 에디터를 다운로드합니다.

    docs.unity3d.com

    www.yes24.com/Product/Goods/61269276?OzSrank=12

     

    명품 JAVA Programming

    자바(Java)는 그 이전 시대에 있었던 프로그래밍 언어에서 한 차원 진화된 개념으로 개발된 가히 혁명적 언어이며 플랫폼이다. 한 번 작성된 자바 프로그램은 어느 컴퓨터, 어떤 운영체제에서도

    www.yes24.com

    www.yes24.com/Product/Goods/59190885

     

    Power JAVA Compact

    자바는 현재 전 세계 개발자들이 가장 많이 사용하는 언어이기 때문에 컴퓨터 공학도라면 반드시 알고 지나가야 하는 중요한 주제이다. 이 책의 가장 큰 목표는 입문자들이 쉽게 이해할 수 있는

    www.yes24.com

     

    '자격증 및 대외활동' 카테고리의 다른 글

    연합 IT 동아리 코테이토 회고  (0) 2022.08.31
    정보처리기사 필기, SQLD 후기  (0) 2022.07.11
Designed by Tistory.