기술면접준비

sky·2021년 1월 18일
0

💻 프로그래밍

  1. JAVA 언어의 특징이란?

    객체지향 언어이며, 플랫폼이 독립적이다.
    멀티쓰레드를 쉽게 구현할 수 있다.
    가비지 콜렉터가 있어 자동으로 메모리 관리를 해준다.
    오픈 라이브러리가 많아서 필요한 기능을 쉽게 개발할 수 있게 해준다.

  2. 객체지향 언어의 장점이란?

    코드의 재사용성이 높아 기존 코드를 재활용할 수 있기 때문에 코드의 중복을 예방하여 불필요한 메모리 낭비를 막을 수 있다. 코드의 관리가 비교적 편하다.

  3. JAVA의 데이터 타입은 어떤 것이 있는가?

    Primitive Type의 종류는 byte, char, short, int, float, long, double, boolean 총 8가지이며,
    Reference Type의 종류는 클래스타입, 인터페이스타입, 배열타입, 열거타입이 있다.

  4. 배열과 컬렉션의 차이는?

    배열은 단 하나의 자료형만 저장이 가능하고, 컬렉션은 복수의 자료형을 저장할 수 있다.
    배열은 고정된 크기(정적 메모리 할당)고, 컬렉션은 가변적 크기(동적 메모리 할당)이다.
    배열은 한 번 선언하면 첫 선언한 만큼만 사용할 수 있고, 컬렉션은 필요한 만큼 더 추가해서 사용가능.

  5. 다형성이란?

    하나의 메소드나 클래스를 다양한 방법으로 동작하는 것을 의미한다.
    오버로딩이나 오버라이딩 등을 통해 필요한 데이터를 활용할 수 있다.

  6. 멀티쓰레드의 장단점은?

    스레드 간 데이터를 주고받는 게 간단하며 응답시간이 단축된다.
    서로 데이터를 사용하다 충돌이 일어날 가능성이 있다. 디버깅이 까다롭다.

  7. JAVA에서 멀티쓰레드를 구현하는 방법은?

    Thread 클래스 상속과 Runnable 인터페이스를 상속하는 방법이 있다.
    스레드 클래스를 상속하면 단일 상속만 가능하며, 인터페이스를 상속하면 다중상속이 가능하다.

  8. JAVA 콜렉션의 대표 인터페이스는 어떤 것이 있는가?

    List
    순서가 있는 데이터의 집합이며 데이터 중복 O
    ex. ArrayList, Stack, Vector
    Set
    순서를 유지하지 않는 데이터의 집합이며 데이터 중복 X
    ex. HashSet, TreeSet
    Map
    Key와 Value의 쌍으로 이루어진 데이터의 집합이며, 순서는 유지되지 않는다.
    키는 중복 X, 값은 중복 O
    ex. HashMap, TreeMap, HashTable, Properties

  9. 컬렉션에서 제네릭이 추가된 이유는?

    컬렉션은 다양한 데이터 타입 요소값이 저장되기 때문에, 필요한 자료형 타입 한 가지로 변환하여 사용하기 위해 제네릭이 추가되었다.

  10. 접근제어자의 종류와 특성은?

    public → 접근 제한이 없다.
    protected → 같은 패키지 내에서, 다른 패키지의 자손클랙스에서 접근가능
    default → 같은 패키지 내에서만 접근가능
    private → 같은 클래스 내에서만 접근가능
    접근허용범위 : public > protected > default > private

  11. Wrapper 클래스란?

    기본 타입 데이터를 객체로 포장해주는 클래스.
    byte → Byte
    short → Short
    int → Integer
    long → Long
    char → Character
    float → Float
    double → Double
    boolean → Boolean

  12. 추상클래스란?

    공통적인 부분을 추출하여 선언한 클래스이며, 객체를 생성할 수 없다.
    클래스 앞에 abstract 키워드를 이용해서 정의한다.
    추상클래스 안의 추상메소드는 선언부만 있고 구현부를 작성하지 않는다.
    추상클래스를 사용하려는 클래스는 상속관계를 가져야 한다.

  13. 인터페이스란?

    인터페이스는 일종의 추상클래스이다. 추상클래스보다 추상화 정도가 높아서 구현부를 지닌 일반 메소드 또는 멤버변수를 가질 수 없다.
    추상메소드와 상수만 가질 수 있다.
    인터페이스는 인터페이스로부터만 상속받을 수 있으며, 일반클래스와 달리 다중상속이 가능하다. (여러 개의 인터페이스 상속가능)

  14. 인터페이스를 쓰는 이유는?

    1. 개발시간을 단축시킬 수 있다. (여러 명이서 개발할 때 각자의 부분만 맡아서 개발한 후 컴파일 할 수 있기 때문)
    2. 표준화 가능 (기본틀에 맞춰 정형화된 개발이 가능)
    3. 서로 관계없는 클래스들에게 관계를 맺어줄 수 있다 (코드 종속성을 줄이고 유지보수성을 높인다)
    4. 독립적인 프로그래밍 가능 (클래스 간 관계를 인터페이스를 통하면 특정 클래스의 변경이 다른 클래스에 영향 끼치지 않기 때문에 프로그래밍에 요긴하다)
  15. 가비지 콜렉터란?

    더이상 사용하지 않는 메모리를 삭제하여 자동으로 메모리를 관리하는 기법

  16. 컬렉션 List 인터페이스를 구현한 ArrayList 컬렉션 클래스에 대해 설명하기

    인덱스로 객체를 관리하며, 크기를 동적으로 늘릴 수 있으며, 중복값을 허용한다.

  17. 메소드에서 오버로딩과 오버라이딩의 차이는?

    오버로딩 → 둘 이상의 메소드가 같은 이름을 가지나 인자의 수나 자료형이 다른 경우
    ㄴ 매개변수는 같고 리턴타입이 다르면 오버로딩 성립 X
    오버라이딩 → 상속관계에 있는 클래스 간에 같은 이름의 메소드 재정의
    ㄴ 메소드 이름, 매개변수, 타입, 리턴타입 동일해야 하며 static 예약어 사용 X

  18. Exception이란?

    프로그램의 비정상적인 종료나 중단을 적절하게 처리할 수 있다.

  19. OSI 7 계층을 설명해보세요.

    네트워크 지원계층

    1. 물리 층
      → 물리적인 장치와 인터페이스가 전송을 위해 필요한 기능과 처리절차 규정
    2. 데이터링크 층
      → 물리층에서 전송한 가공되지 않은 데이터를 신뢰성 있는 링크로 변환
    3. 네트워크 층
      → 패킷을 반신지로부터 여러 네트워크를 통해 목적지에 전달

    전송층

    1. 전송층
      → 전체 메세지의 프로세스 대 프로세스 전달해줌

    사용자 지원계층

    1. 세션층
      → 통신하는 시스템들 사이의 상호작용을 설정 유지하고 동기화
    2. 표현층
      → 두 시스템 사이에 교환되는 정보의 구문과 의미에 관련되어 변환, 압축 및 암호화
    3. 응용층
      → 사용자가 네트워크에 접근할 수 있도록 함.
      사용자 인터페이스, 전주우편, 파일접근과 전송 등 분산정보 서비스 제공
  20. 동기화란?

    여러 곳에서 한 자원을 사용하려고 할 때, 이미 사용하고 있는 해당 스레드를 제외하고 나머지 스레드들이 데이터에 접근할 수 없도록 막는 것.

  21. 프로세스와 쓰레드의 차이점은?

    프로세스 : 실행 중인 프로그램, 지원과 쓰레드로 구성
    쓰레드 : 프로세스 내에 실제 작업을 수행하는 단위. 모든 프로세스는 하나 이상의 쓰레드를 가지고 있음
    다중 쓰레드 : 하나의 프로세스(프로그램)에 하나 이상의 쓰레드를 생성하여 실행

profile
keep going

0개의 댓글