기술 면접때 몰랐던 것들 정리

wjd15sheep·2025년 7월 4일
0

Web 기초

목록 보기
10/10

최근 기술 면접을 보며 제대로 대답하지 못했던 개념들을 복습하고 정리합니다. 부족했던 부분들을 되돌아보고, 다시는 틀리지 않도록 정리해봅니다.


JAVA

JDK와 JRE의 차이

면접에서 갑작스럽게 “JDK와 JRE가 뭔가요?”라는 질문을 받았지만, 순간적으로 개념이 떠오르지 않아 제대로 답하지 못했습니다.
이번 기회에 정확히 정리합니다.

  • JDK (Java Development Kit)

    • 자바 개발 도구 모음 (컴파일러 javac, 문서화 도구 javadoc, 디버거 등 포함)
    • 자바 프로그램을 개발하고 실행할 수 있게 해주는 전체 패키지
    • 내부에 JRE 포함
  • JRE (Java Runtime Environment)

    • 자바 프로그램을 실행하기 위한 환경
    • JVM + 실행에 필요한 라이브러리들로 구성됨
    • 개발 도구는 없음

JDK-JRE-JVM


Jar 파일과 Zip의 차이

Jar에 대해 묻는 질문에서, Zip과 전혀 다른 형식이라고 잘못 답변했습니다.
알고 보니 Jar는 Zip의 일종이었습니다.

  • JAR (Java ARchive)

    • 여러 Java 클래스, 리소스, 메타데이터를 하나의 파일로 묶는 압축 파일
    • 실행 가능한 .jar 파일은 main() 함수가 포함된 클래스 지정 필요
  • ZIP과의 차이점

    • 내부 구조는 .zip과 동일한 압축 방식 사용
    • 차이점: Java 환경에서 실행 가능하도록 메타정보(MANIFEST.MF)가 포함되어 있음
    • 배포jar는 압축 해제 없이 바로 실행 가능 (java -jar 명령어)

면접에서 ZIP은 압축 풀고 써야 한다고 말한 부분은 맞았지만, 완전한 설명은 아니었음


Heap 영역에 객체가 생성되는 과정

객체 생성 시 Heap에 어떻게 적재되는지 묻는 질문에서 new로 객체를 만들면 Heap에 들어간다고만 설명해 부족한 느낌이 들었습니다.
더 자세히 정리합니다.

  1. 클래스 로딩

    • .class 파일을 메서드 영역(Method Area)에 로딩
    • 클래스의 메타정보, static 변수, 메서드 등 저장
  2. 객체 메모리 할당

    • new 키워드로 호출 → JVM이 Heap 영역에 메모리 할당
  3. 객체 초기화

    • 필드를 0/null로 초기화
    • 생성자 호출로 초기값 세팅
  4. 참조 변수 저장

    • Heap에 생성된 객체의 주소가 Stack에 저장됨

WEB

Web Server vs WAS

웹 서버와 WAS를 구분하지 못해 핵심 키워드인 정적/동적 페이지 처리를 빠뜨리고 설명함. 다시 정리합니다.

  • Web Server

    • HTML, CSS, JS 등 정적 페이지 제공
    • 대표적으로: Apache HTTP Server, Nginx
  • WAS (Web Application Server)

    • 사용자 요청에 따라 동적으로 페이지를 생성
    • Java Servlet, JSP 등을 처리
    • WAS는 보통 웹 서버 + 컨테이너로 구성

핵심: 정적(HTML) vs 동적(서블릿/JSP) 처리 여부


아파치 서버는 Web Server일까 WAS일까?

정답은 “웹 서버”라고 답했지만, 이유 설명이 부족했음.

  • Apache HTTP Server
    • 정적 리소스를 처리하는 웹 서버
    • WAS는 아님
    • 동적 요청은 WAS로 프록시하는 방식으로 사용됨 (ex. Apache + Tomcat)

해시(Hash)

마지막 질문으로 나온 해시 함수에 대해서는 단답형으로 끝냈음. 짧지만 정확하게 정리합니다.

  • 해시 함수(Hash Function)
    • 임의의 입력값을 고정된 길이의 값으로 매핑
    • 복호화 불가능 → 단방향 암호화
    • 보통 비밀번호 저장, 무결성 검사 등에 활용됨
    • 대표 알고리즘: SHA-256, MD5

마무리 ✍️

기술 면접에서 틀린 질문은 스스로를 성장시킬 기회라고 생각합니다.
이번 복습을 통해 단편적인 이해가 아닌, 핵심 키워드와 흐름을 설명할 수 있는 수준으로 끌어올리겠습니다.

📖 참고: Inpa Dev 👨‍💻: JDK/JRE/JVM 개념 총정리

profile
성장 위해 노력하는 웹 개발자 주니어

0개의 댓글