Developer Cafe

웹개발자 기술면접 정리 6 본문

기술면접

웹개발자 기술면접 정리 6

개발자 카페 2021. 3. 29. 15:41
728x90

아파치는 멀티 프로세스인가 멀티 쓰레드인가?

아파치는 기본적으로 멀티 프로세스로 구현되어 있다. 하지만 설정에 따라 멀티 쓰레드를 같이 운용할 수 있다.

톰캣은 멀티 프로세스인가 멀티 쓰레드인가?

톰캣은 요청을 처리하기 위한 쓰레드 풀을 관리하고 있다. 그리고 요청이 오면 해당 쓰레드 풀에서 쓰레드를 꺼내 요청을 처리하도록 한다.

1. 디자인 패턴

  • 생성 패턴
    • 팩토리 패턴: 객체를 생성하기 위한 디자인 패턴
    • 추상 팩토리 패턴: 객체를 생성하는 팩토리를 생성하기 위한 디자인 패턴
    • 빌더 패턴: 상황에 따라 동적인 인자를 필요로 하는 객체를 생성하기 위한 디자인 패턴
    • 싱글톤 패턴: 객체를 1개만 생성하여 항상 참조가능하도록 고안된 디자인 패턴
  • 구조 패턴
    • 어댑터 패턴: 호환성이 맞지 않는 두 클래스를 연결하여 사용하기 위한 디자인 패턴
    • 프록시 패턴: 어떤 객체에 접근하기 위해 대리인을 사용하는 디자인 패턴
    • 데코레이터 패턴
    • 퍼사드 패턴: 어떤 복합적인 기능에 대해 간략화된 인터페이스를 제공하는 디자인 패턴
  • 행위 패턴
    • 전략 패턴: 상황에 따라 다른 전략을 사용하기 위한 디자인 패턴
    • 옵저버 패턴: 값을 관찰하여 빠르게 반영하기 위한 디자인 패턴
    • 커맨드 패턴: 실행될 기능을 캡슐화하여 재사용성이 높은 클래스를 설계하기 위한 디자인 패턴

2. 추상클래스와 인터페이스의 차이

  • 추상클래스
    • 단일 상속만이 가능하다.
    • 모든 접근 제어자를 사용할 수 있다.
    • 변수와 상수를 선언할 수 있다.
    • 추상 메소드와 일반 메소드를 선언할 수 있다.
  • 인터페이스
    • 다중 구현이 가능하다.
    • public 접근 제어자만 사용할 수 있다.
    • 상수만 선언할 수 있다.
    • 추상메소드만 선언할 수 있다.

3. Java의 List, Set, Map 차이

  • List
    • 데이터를 순차적으로 저장한다.
    • 데이터의 중복을 허용한다. 
    • 데이터로 null을 허용한다.
  • Set
    • 순서없이 Key로만 데이터를 저장한다.
    • Key의 중복을 허용하지 않는다.
    • Key로 null을 허용하지 않는다.
  • Map
    • 순서없이 Key, Value로 데이터를 저장한다.
    • Value는 중복을 허용하지만 Key의 중복을 허용하지 않는다.
    • Key로 null을 허용하지 않는다.

4. Java의 Vector와 ArrayList 차이

  • Vector
    • 동기화를 지원한다.
    • 속도가 느리지만 병렬 상황에서 안전하다.
    • 크기가 증가하는 경우, 2배 증가함(10 -> 20)
  • ArrayList
    • 동기화를 지원하지 않는다.
    • 속도는 빠르지만 병렬 상황에서 안전하지 않다.
    • 크기가 증가하는 경우, 1.5배 증가함(10 -> 15)

5. Java의 StringBuffer와 StringBuilder 차이

  • StringBuffer
    • 동기화를 지원한다.
    • 속도가 느리지만 병렬 상황에서 안전하다.
  • StringBuilder
    • 동기화를 지원하지 않는다.
    • 속도는 빠르지만 병렬 상황에서 안전하지 않다.

6. 자바 동작 과정

  1. Java 소스 파일을 javac로 컴파일하여 class파일(Java 바이트 코드)을 생성함
  2. 클래스로더가 컴파일된 Java 바이트 코드를 런타임 데이터 영역(Runtime Data Areas)로 로드함
  3. 실행 엔진(Execution Engine)이 자바 바이트코드를 실행함

728x90
Comments