코드스테이츠 S1 기술 면접

NtoZ·2023년 5월 8일
0

CodeStates

목록 보기
3/4
post-thumbnail

🚩 코드스테이츠 S1 최종 : 기술 면접

기술 면접 질문

  • Q1. 자바 데이터 타입 중 기본형과 참조형의 차이에 대해 설명해주세요.
  • Q2. 클래스와 객체에 대해 설명해주세요.
  • Q3. 생성자에 대해 설명해주세요.
  • Q4. 메서드 오버라이딩과 메서드 오버로딩의 차이는 무엇인가요?
  • Q5. 자바의 메모리 영역에 대해 설명해주세요.
  • Q6. static 키워드에 대해 설명하고, static를 언제 사용해야 하는 지 설명해주세요.
  • Q7. 자바 객체지향 프로그래밍(OOP)에 대해 설명해주세요.
  • Q8. 자바 접근 제어자의 특징과 종류에 대해서 설명해주세요.
  • Q9. 추상 클래스와 인터페이스의 차이는 무엇인가요?
  • Q10. 이너클래스의 장점에 대해 설명해주세요.
  • Q11. OOP의 장점과 단점에 대해 설명해주세요.
  • Q12. List, Set, Map의 차이에 대해서 설명해주세요 .
  • Q13. 컬렉션과 스트림의 차이에 대해서 설명해주세요.
  • Q14. 제네릭에 대해서 설명하고, 컬렉션 클래스에서 왜 제네릭을 사용하는 지 설명해주세요.

페어 질문

  • Q6. static 키워드에 대해 설명하고, static를 언제 사용해야 하는 지 설명해주세요.
    ➡️ static을 사용하여 만든 멤버들은 클래스가 JVM에 의해 메모리에 로드되었을 때 생성된다. static이 붙지 않은 iv들과는 다르게 객체를 생성하지 않고도 사용이 가능하다.
    static 메서드는 인스턴스 멤버를 사용할 수 없다. 그 이유는 static 메서드가 실행될 때 인스턴스가 반드시 존재한다고 확신할 수 없기 때문이다. 따라서 static은 iv없이 같은 static 변수만을 사용하여 정의, 구현할 때 사용한다.

    • 인스턴스 멤버와 static 변수의 차이를 알려주세요.
    • ⭐JVM의 어디에 static 멤버가 위치하는지 알려주세요.
      ➡️ static 키워드를 사용하여 메서드나 멤버변수를 정의하게 된다면 해당 스테틱 멤버들은 Java 8부터 힙의 메타스페이스 영역에 로드된다. 이 영역은 JVM이 아닌 OS가 관리하며, 참조를 잃은 스테틱 멤버들은 GC가 관리할 수 있다. [JAVA] Java8부터는 static이 heap영역에 저장된다?
  • Q7. 자바 객체지향 프로그래밍(OOP)에 대해 설명해주세요.
    ➡️ 객체 지향 프로그래밍은 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러 개의 독립된 단위, 즉 "객체"들의 모임으로 파악하고자 하는 것이다. 객체 지향 프로그래밍은 프로그램을 유연하고 변경이 쉽게 만들기 때문에 대규모 소프트웨어 개발에 많이 사용된다. 또한 프로그래밍을 더 배우기 쉽게 하고 소프트웨어 개발과 보수를 간편하게 하며, 보다 직관적인 코드 분석을 가능하게 하는 장점이 있다. 그러나 지나친 프로그램의 객체화 경향은 실제 세계의 모습을 그대로 반영하지 못한다는 비판을 받기도 한다.

    • OOP가 가지는 장점에 대해 설명해주세요.
    • 객체지향을 활용하여 과제에 적용한 사례를 하나 들어주세요.
    • ⭐캡, 상, 추, 다에 대해 간단히 설명해주세요.
      ➡️캡슐화란 특정 객체 안에 관련된 속성과 기능을 하나의 캡슐(capsule)로 만들어 데이터를 외부로부터 보호하는 것을 말합니다.❶데이터 보호의 목적이고, 둘째로 ❷내부적으로만 사용되는 데이터에 대한 불필요한 외부 노출을 방지하기 위함이다.
      ➡️상속이란 기존의 클래스를 재활용하여 새로운 클래스를 작성하는 자바의 문법 요소를 의미합니다.가장 단순한 형태를 생각해 보면, 두 클래스를 상위 클래스와 하위 클래스로 나누어 상위 클래스의 멤버(필드, 메서드, 내부 클래스)를 하위 클래스와 공유하는 것을 의미합니다.
      ➡️추상화는 객체의 공통적인 속성과 기능을 추출하여 정의하는 것을 의미한다.추상화는 상속과 반대로 기존 클래스들의 공통적인 요소들을 뽑아서 상위 클래스를 만들어 내는 것
      ➡️다형성은 상위 클래스 타입의 참조 변수를 통해서 하위 클래스의 객체를 참조할 수 있도록 허용한 것
      상위 클래스를 참조 변수의 타입으로 지정했기 때문에 자연스럽게 참조 변수가 사용할 수 있는 멤버의 개수는 상위 클래스의 멤버의 수가 된다.
      하위 클래스 타입 참조변수로 상위 클래스 타입의 객체를 참조하는 것은 불가능함
  • Q9. 추상 클래스와 인터페이스의 차이는 무엇인가요?
    ➡️ 추상 클래스와 인터페이스는 모두 객체지향의 원리 중 추상화의 원리를 적용받는다는 공통점이 있다. 그러나 분명한 차이점이 존재한다. 추상 클래스는 일반적인 클래스처럼 상수, 멤버 변수, 일반적인 메서드를 포함할 수 있다. 그러나 하나 이상의 반드시 추상 메서드를 가진다. 인터페이스는 상수와 추상 메서드만을 포함하는 것을 원칙으로 한다. (java8 부터 디폴트 메서드와 스태틱 메서드를 사용할 수 있게 되었지만 이는 인터페이스의 핵심적인 개념이 아니다.)
    • 인터페이스가 갖는 장점에 대해 설명해주세요.
      ➡️일반적인 인터페이스의 기능처럼 역할과 구현을 분리시켜 사용자 입장에서는 복잡한 구현의 내용 또는 변경과 상관없이 해당 기능을 사용할 수 있다는 점입니다.따라서 앞선 예제에서 봤었던 것과 같이 하나하나 코드를 일일이 변경해주어야 할 필요도 없어집니다.
    • 인터페이스가 보유할 수 있는 타입에 대해 설명해주세요.
    • 상속 관점에서 차이점을 설명해주세요.
    • 객체 관점에서 차이점을 설명해주세요.
    • 인터페이스를 구현하는 방법에 대해 설명해주세요.
    • 다음 사례에 대해 익명 클래스로 인터페이스를 구현해주세요.
      interface Runnable { run ();}

내가 원한 질문

  • Q11. OOP의 장점과 단점에 대해 설명해주세요.
    • 객체 지향 프로그래밍은 장점
      객체 지향 프로그래밍은 캡슐화와 격리구조에 때문에 절차지향 프로그래밍과 비교하면 실행 속도가 느리다. 또한, 객체지향에서는 모든 것을 객체로 생각하기 때문에 추가적인 포인터 크기의 메모리와 연산에 대한 비용이 들어가게 된다.

      절차지향 프로그래밍에 비해 느린 실행 속도
      필요한 메모리양의 증가
  • Q12. List, Set, Map의 차이에 대해서 설명해주세요 .

  • Q13. 컬렉션과 스트림의 차이에 대해서 설명해주세요.

profile
9에서 0으로, 백엔드 개발블로그

0개의 댓글