본문 바로가기
신입 개발자 기술면접 준비

[IT기술면접 준비] 웹 프로그래밍(Web Programing)

by whisperscope_ai 2024. 5. 26.
반응형
HTML란?

HTML(HyperText Markup Language)은 웹 페이지의 구조와 내용을 정의하는 마크업 언어입니다. 예를 들어, HTML 태그를 사용하여 텍스트, 이미지, 링크 등 다양한 요소를 웹 페이지에 배치합니다. HTML은 웹 페이지의 기본 구조를 잡는 역할을 하며, 웹 브라우저가 이를 해석하여 화면에 보여줍니다.

CSS란?

CSS(Cascading Style Sheets)는 웹 페이지의 외관을 정의하는 스타일시트 언어입니다. HTML과 함께 사용되어, 웹 페이지의 레이아웃, 색상, 폰트 등을 설정하여 시각적으로 아름다운 페이지를 만듭니다. 예를 들어, CSS를 사용하여 웹 페이지의 배경 색상을 변경하거나, 텍스트의 크기와 색상을 조정할 수 있습니다.

Javascript란?

Javascript는 웹 페이지의 동적 기능을 구현하는 스크립트 언어입니다. HTML과 CSS와 함께 사용되어, 사용자와 상호작용하는 웹 페이지를 만듭니다. 예를 들어, 버튼 클릭 시 이벤트 처리, 폼 검증, 애니메이션 등을 구현할 수 있습니다. 예를 들어, 쇼핑몰 사이트에서 장바구니에 물건을 추가할 때 동적으로 업데이트하는 기능을 구현할 수 있습니다.

Python란?

Python은 고수준 프로그래밍 언어로, 간결하고 읽기 쉬운 문법을 갖추고 있습니다. 웹 개발, 데이터 분석, 인공지능, 과학 계산 등 다양한 분야에서 사용됩니다. 예를 들어, Django 프레임워크를 사용하여 웹 애플리케이션을 개발하거나, Pandas 라이브러리를 사용하여 데이터 분석을 수행할 수 있습니다. Python은 강력한 라이브러리와 커뮤니티 지원으로 인해 매우 인기가 있습니다.

JSP란?

JSP(JavaServer Pages)는 자바 기반 템플릿 엔진으로, HTML 내에 자바 코드를 삽입하여 동적 웹 페이지를 생성합니다. 예를 들어, 사용자가 입력한 데이터를 처리하여 결과를 동적으로 생성하는 웹 페이지를 만들 수 있습니다. 주로 서버 사이드에서 실행되며, 서블릿과 함께 사용됩니다.

IP란?

TCP/IP: 인터넷과 네트워크 통신을 위한 프로토콜 스택으로, 데이터 전송의 신뢰성과 흐름 제어를 담당합니다.

사설 IP (Private IP): 내부 네트워크에서 사용되는 IP 주소로, 외부 인터넷에서 직접 접근할 수 없습니다. 예: 192.168.0.1.

공인 IP (Public IP): 인터넷에 직접 연결된 IP 주소로, 외부에서 접근 가능합니다.

get post 차이점은?

GET: 서버에서 데이터를 요청할 때 사용되며, 요청 데이터는 URL에 쿼리 스트링으로 포함됩니다. 캐싱이 가능하며, 길이 제한이 있습니다.

POST: 서버에 데이터를 제출할 때 사용되며, 요청 데이터는 HTTP 메시지의 본문에 포함됩니다. 보안이 높고, 데이터 크기 제한이 없습니다.

JavaScript란 무엇인가요?

JavaScript: 웹 페이지의 동적 기능을 구현하기 위한 스크립트 언어입니다. 주로 클라이언트 사이드에서 실행되며, HTML과 CSS와 함께 웹 개발의 핵심 요소입니다.

JavaScript의 주요 특징은 무엇인가요?
  • 동적 타이핑: 변수의 데이터 타입을 명시할 필요가 없습니다.
  • 객체 기반: 객체 지향 프로그래밍을 지원합니다.
  • 이벤트 중심: 사용자와의 상호작용을 처리할 수 있습니다.
  • 인터프리터 언어: 코드를 한 줄씩 실행합니다.
var, let, const의 차이점은 무엇인가요?
  • var: 함수 스코프를 가지며, 중복 선언이 가능합니다.
  • let: 블록 스코프를 가지며, 중복 선언이 불가능합니다.
  • const: 블록 스코프를 가지며, 상수로 사용되며 중복 선언과 재할당이 불가능합니다.
이벤트 버블링(Event Bubbling)과 이벤트 캡처링(Event Capturing)의 차이점은 무엇인가요?
  • 이벤트 버블링: 이벤트가 하위 요소에서 시작하여 상위 요소로 전파됩니다.
  • 이벤트 캡처링: 이벤트가 상위 요소에서 시작하여 하위 요소로 전파됩니다.
HTML5의 주요 기능은 무엇인가요?
  • 새로운 시맨틱 태그:
    ,
    ,
    ,
    등.
  • 비디오 및 오디오 태그:
  • 캔버스 요소: 를 사용한 그래픽 및 애니메이션.
  • 폼 입력 타입: email, date, color 등.
  • 로컬 저장소: localStorage와 sessionStorage.
시맨틱 태그란 무엇인가요?

시맨틱 태그 (Semantic Tag): 웹 페이지의 의미를 명확히 하기 위해 사용되는 HTML 태그입니다. 예:

,
HTML 폼 요소의 주요 속성은 무엇인가요?
  • action: 폼 데이터가 전송될 URL을 지정합니다.
  • method: 폼 데이터 전송 방식을 지정합니다 (GET 또는 POST).
  • enctype: 폼 데이터 인코딩 방식을 지정합니다.
  • target: 폼이 제출된 후 결과를 표시할 창이나 프레임을 지정합니다.
HTML5에서 새로 추가된 입력 타입은 무엇인가요?

새로운 입력 타입: email, url, number, range, date, month, week, time, datetime-local, color.

CSS의 주요 선택자는 무엇인가요?
  • 기본 선택자: 태그, 클래스, ID 선택자.
  • 조합 선택자: 자손 선택자, 자식 선택자, 인접 형제 선택자, 일반 형제 선택자.
  • 속성 선택자: 특정 속성을 가진 요소를 선택.
  • 가상 클래스 선택자: :hover, :focus, :nth-child 등.
  • 가상 요소 선택자: ::before, ::after 등.
CSS 상속이란 무엇인가요?

CSS 상속: 특정 요소의 스타일 속성이 자식 요소에 상속되는 것을 의미합니다. 예: 글꼴, 색상 등.

반응형 웹 디자인(Responsive Web Design)이란 무엇인가요?

반응형 웹 디자인: 다양한 디바이스와 화면 크기에 맞추어 웹 페이지의 레이아웃을 동적으로 조절하는 디자인 기법입니다. 미디어 쿼리를 사용하여 구현합니다.

프레임워크와 라이브러리의 차이?

프레임워크: 애플리케이션의 구조를 정의하고, 주요 흐름을 제어합니다. 개발자는 프레임워크가 제공하는 구조 내에서 코드를 작성합니다. 예: Spring Framework.

라이브러리: 특정 기능을 제공하며, 개발자가 필요할 때 호출하여 사용합니다. 애플리케이션의 흐름을 제어하지 않습니다. 예: jQuery.

Spring Framework?

Spring은 자바 플랫폼을 위한 애플리케이션 프레임워크로, 자바 애플리케이션 개발을 단순화하고, 다양한 엔터프라이즈 애플리케이션 기능을 제공합니다. DI(Dependency Injection), AOP(Aspect-Oriented Programming) 등의 기능을 통해 개발 생산성을 높입니다. 예를 들어, 대규모 웹 애플리케이션에서 의존성을 관리하고, 횡단 관심사를 분리하여 코드를 깔끔하게 유지할 수 있습니다.

Spring Boot

Spring Boot:
Spring Boot는 Spring 프레임워크를 기반으로 하며, Spring 애플리케이션의 설정과 구성을 단순화합니다. 최소한의 설정으로 빠르게 애플리케이션을 개발하고 배포할 수 있습니다. 예를 들어, 기본 설정이 포함된 템플릿 프로젝트를 사용하여 웹 애플리케이션을 빠르게 시작할 수 있습니다.

Spring Boot와 Spring Framework의 차이점을 설명하시오?

Spring Boot: Spring Framework를 기반으로 한 프레임워크로, 복잡한 설정 없이 빠르게 애플리케이션을 개발하고 배포할 수 있도록 지원합니다. 자동 설정과 독립 실행형 애플리케이션을 제공하여 생산성을 높입니다.

apache는 무슨 일을 하는지?

Apache HTTP Server: 가장 널리 사용되는 웹 서버 소프트웨어로, HTTP 요청을 처리하고 정적 및 동적 콘텐츠를 제공하며, 다양한 모듈을 통해 기능을 확장할 수 있습니다.
클라이언트(예: 웹 브라우저)와 서버 간의 HTTP 요청과 응답을 처리합니다. 이 역할 때문에 Apache HTTP Server를 넓은 의미에서 미들웨어의 한 종류로 볼 수 있습니다.

Apache Tomcat: Apache Tomcat은 서블릿(Servlet)과 JSP(JavaServer Pages)를 실행할 수 있는 자바 서블릿 컨테이너입니다. 주로 동적 웹 애플리케이션을 실행하는 데 사용됩니다.

주요 기능 및 역할:

  1. 서블릿 컨테이너:
    • 서블릿을 실행하고, HTTP 요청 및 응답을 처리합니다.
    • 예시: 클라이언트가 로그인 요청을 보내면, Tomcat은 해당 요청을 서블릿에 전달하고, 서블릿은 비즈니스 로직을 처리하여 응답을 생성합니다.
  2. JSP 처리:
    • JSP 파일을 서블릿으로 변환하여 실행합니다. JSP는 HTML 내에 자바 코드를 포함할 수 있게 하여 동적 콘텐츠를 생성하는 데 사용됩니다.
    • 예시: 사용자가 제품 목록을 요청하면, JSP는 데이터베이스에서 제품 정보를 가져와 HTML로 동적 생성하여 사용자에게 보냅니다.
미들웨어 (Middleware)란?

미들웨어는 애플리케이션과 운영 체제, 서버와 클라이언트 사이에서 중간 역할을 하는 소프트웨어입니다. 예를 들어, 데이터베이스 연결을 관리하는 JDBC, 웹 서버 역할을 하는 Apache Tomcat 등이 있습니다. 미들웨어는 다양한 시스템 간의 통신을 돕고, 데이터 관리 및 애플리케이션 서비스 제공을 용이하게 합니다. 예를 들어, 웹 애플리케이션이 데이터베이스에 접근할 때 미들웨어를 통해 안전하고 효율적으로 데이터를 주고받을 수 있습니다.

서버 클라이언트 차이점?
  • 서버: 클라이언트의 요청을 처리하고 응답을 제공하는 역할을 합니다. 데이터를 저장하고 관리하며, 애플리케이션 서비스를 제공합니다.
  • 클라이언트: 서버에 요청을 보내고, 서버로부터 응답을 받는 역할을 합니다. 사용자 인터페이스를 제공하고, 사용자의 입력을 처리합니다.
인터셉터 필터 차이?
  • 인터셉터 (Interceptor): Spring MVC에서 사용되며, 요청 처리 전후에 공통 로직을 수행할 수 있습니다. HandlerMapping을 통해 요청을 가로챕니다.
  • 필터 (Filter): 서블릿에서 사용되며, 요청과 응답의 전후 처리에 사용됩니다. 웹 애플리케이션의 모든 요청에 대해 필터링을 적용할 수 있습니다.
스프링 mvc가 뭔지 설명해보세요?

Spring MVC: Spring Framework의 모듈로, 웹 애플리케이션 개발을 위한 MVC 패턴을 지원합니다. Model-View-Controller 구조를 통해 비즈니스 로직과 프레젠테이션 로직을 분리합니다.

ajax가 무엇인가?

AJAX (Asynchronous JavaScript and XML): 웹 페이지를 새로 고침하지 않고 서버와 비동기적으로 데이터를 주고받을 수 있게 하는 기술입니다. 주로 JavaScript를 사용하여 구현되며, JSON 형식의 데이터를 주고받는 데 많이 사용됩니다.

자바 servlet의 life cycle에 대해 기술하시오?

서블릿의 생명주기:

  1. init(): 서블릿이 초기화될 때 한 번 호출됩니다.
  2. service(): 클라이언트 요청이 있을 때마다 호출됩니다.
  3. destroy(): 서블릿이 종료될 때 한 번 호출됩니다.
REST API가 무엇인지 설명?

REST API: Representational State Transfer 아키텍처를 기반으로, HTTP 프로토콜을 통해 데이터를 주고받는 API입니다. 리소스 지향적이며, HTTP 메서드(GET, POST, PUT, DELETE)를 사용하여 CRUD 작업을 수행합니다.

Validation Check란?

Validation Check: 입력된 데이터가 유효한지 검사하는 과정입니다. 유효성 검사는 서버 측과 클라이언트 측 모두에서 수행될 수 있으며, 데이터의 무결성과 보안을 보장합니다.

직렬화(Serialize)에 대해 설명하시오?

직렬화 (Serialization): 객체의 상태를 바이트 스트림으로 변환하여 저장하거나 전송할 수 있게 하는 과정입니다. 역직렬화(Deserialization)는 바이트 스트림을 다시 객체로 변환하는 과정입니다.

SerialVersionUID를 선언해야 하는 이유를 설명하시오?

SerialVersionUID: 직렬화된 객체의 호환성을 유지하기 위해 클래스에 선언하는 고유 식별자입니다. 클래스 구조가 변경되더라도 동일한 SerialVersionUID를 가지면 역직렬화할 수 있습니다.

Autowired 키워드란?

@Autowired: Spring에서 의존성 주입을 자동으로 처리하기 위해 사용하는 애노테이션입니다. 클래스의 필드, 생성자, 메서드에 적용할 수 있으며, 스프링 컨테이너가 해당 빈을 자동으로 주입합니다.

의존성 주입(DI, Dependency Injection)에 대해 설명하시오?

DI (Dependency Injection): 객체 간의 의존성을 외부에서 주입하여 객체 간의 결합도를 낮추고, 코드의 재사용성과 테스트 용이성을 높이는 설계 패턴입니다.

AOP란 무엇인가?

AOP (Aspect-Oriented Programming): 공통 관심사를 모듈화하여 코드의 중복을 줄이고, 유지 보수성을 향상시키는 프로그래밍 패러다임입니다. 주로 로깅, 트랜잭션 관리, 보안 등에 사용됩니다.

WAS(Web Application Server)와 WS(Web Server)의 차이를 설명하시오?
  • WAS: 동적 웹 콘텐츠를 제공하며, JSP, Servlet, EJB 등을 실행할 수 있습니다.
  • WS: 정적 웹 콘텐츠를 제공하며, HTML, CSS, JavaScript 파일을 클라이언트에게 전달합니다.
Spring MVC 패턴의 구성과 실행 흐름을 설명하시오?

Spring MVC 패턴 구성:

  • Model: 데이터를 담고 있는 객체
  • View: 데이터를 보여주는 화면
  • Controller: 사용자의 요청을 처리하고 모델과 뷰를 연결
  • 실행 흐름:*
  1. 클라이언트 요청
  2. DispatcherServlet이 요청을 받음
  3. HandlerMapping을 통해 요청을 적절한 컨트롤러에 전달
  4. 컨트롤러가 요청을 처리하고 모델을 생성
  5. 모델을 뷰에 전달
  6. 뷰가 렌더링되어 클라이언트에게 응답
서블릿(Servlet)의 동작 방식에 대해 설명하시오?
  1. 클라이언트 요청: 클라이언트가 서블릿을 호출
  2. 서블릿 컨테이너: 요청을 서블릿에 전달
  3. 요청 처리: 서블릿이 service() 메서드를 통해 요청을 처리
  4. 응답: 서블릿이 응답을 생성하여 클라이언트에 반환
Servlet vs JSP 비교?
  • Servlet: 자바 코드로 작성된 서버 측 프로그램으로, 요청과 응답을 처리하는 데 사용됩니다. HTML을 자바 코드 내에서 작성해야 합니다.
  • JSP: HTML 내에 자바 코드를 삽입할 수 있는 기술로, 서블릿보다 쉽게 동적 웹 페이지를 작성할 수 있습니다.
스프링을 사용하지 않고 MVC를 JSP에서 만들려면?

스프링을 사용하지 않고 MVC 패턴을 구현하려면, 서블릿과 JSP를 사용하여 직접 요청을 처리하고, 모델 데이터를 JSP에 전달하는 구조를 작성해야 합니다. 서블릿은 컨트롤러 역할을 하고, JSP는 뷰 역할을 하며, 모델은 자바빈즈로 구현합니다.

DAO와 DTO, VO에 대해 설명하시오
  • DAO (Data Access Object): 데이터베이스에 접근하여 데이터를 조회, 삽입, 업데이트, 삭제하는 기능을 담당하는 객체입니다.
  • DTO (Data Transfer Object): 계층 간 데이터 전송을 위해 사용되는 객체로, 주로 데이터의 저장과 전달을 목적으로 합니다.
  • VO (Value Object): VO는 주로 변경 불가능한(immutable) 객체로 사용되며, 객체 자체가 값을 표현합니다. VO는 주로 여러 속성을 가진 객체의 값 그 자체를 표현하고, 두 VO가 같은 값을 가지면 동일한 것으로 간주됩니다.
제어의 역전(IoC, Inversion of Control)에 대해 아는대로 설명하시오

IoC (Inversion of Control): 객체의 생성과 관리를 개발자가 아닌 컨테이너가 담당하는 설계 원칙입니다. 이를 통해 객체 간의 결합도를 낮추고, 코드의 유연성과 테스트 용이성을 높입니다.

Spring에서 빈(Bean)을 등록하는 방법에 대해 설명하시오?
**Spring 빈(Bean)이란?**
  • Spring 빈: Spring IoC(제어의 역전) 컨테이너에 의해 관리되는 객체를 의미합니다. 빈은 애플리케이션의 구성 요소로, 객체 간의 의존성을 관리하고 애플리케이션의 라이프 사이클을 제어합니다.
  • Spring에서 빈을 등록하는 방법은 다음과 같습니다:
  • XML 설정: applicationContext.xml 파일에 빈을 선언
  • 자바 설정: @Configuration 클래스에서 @Bean 메서드를 사용하여 빈을 정의
  • 컴포넌트 스캔: 클래스에 @Component, @Service, @Repository, @Controller 애노테이션을 사용하여 자동으로 빈을 등록
Spring Bean의 라이프사이클은 어떻게 관리되는지 설명하시오?

Spring Bean의 라이프사이클:

  1. 빈 인스턴스화: 스프링 컨테이너가 빈을 생성
  2. 의존성 주입: 의존성을 주입
  3. 초기화: @PostConstruct 애노테이션이 붙은 메서드 실행
  4. 사용: 애플리케이션에서 빈을 사용
  5. 소멸: @PreDestroy 애노테이션이 붙은 메서드 실행 후 빈 소멸
Spring Filter와 Interceptor에 대해 설명하고, 사용 예시를 설명하시오?
  • Filter: 서블릿 필터로, 요청과 응답의 전처리 및 후처리에 사용됩니다. 예: 인증, 로깅.
  • Interceptor: 스프링 MVC 인터셉터로, 컨트롤러 호출 전후에 로직을 추가할 수 있습니다. 예: 로그인 확인, 요청 로깅.
관점지향 프로그래밍(AOP, Aspect-Oriented Programming)는 무엇이고, 언제 사용할 수 있을까?

AOP (Aspect-Oriented Programming): 공통 관심사를 모듈화하여 코드의 중복을 줄이고, 유지 보수성을 향상시키는 프로그래밍 패러다임입니다. 주로 로깅, 트랜잭션 관리, 보안 등에 사용됩니다.

Lombok 이란? 롬복이 만드는 메소드들이 생성되는 시점은 언제인가요?

Lombok: 자바에서 반복되는 보일러플레이트 코드를 줄여주는 라이브러리입니다. @Getter, @Setter, @ToString, @EqualsAndHashCode, @Data 등의 애노테이션을 제공합니다. 롬복이 만드는 메서드들은 컴파일 시점에 생성됩니다.

Spring의 싱글톤 패턴에 대해 설명하시오?

싱글톤 패턴: 클래스의 인스턴스가 하나만 생성되도록 보장하는 디자인 패턴입니다. 스프링 컨테이너는 기본적으로 빈을 싱글톤으로 관리하여, 애플리케이션 내에서 동일한 빈 인스턴스를 재사용합니다.

Thymeleaf?

Thymeleaf는 자바 기반 템플릿 엔진으로, HTML 템플릿을 사용하여 동적 웹 페이지를 생성합니다. 주로 스프링 프레임워크와 함께 사용되며, 자연스러운 HTML 형태로 템플릿을 작성할 수 있어 직관적입니다. 예를 들어, HTML 문서 안에 변수를 삽입하여 서버에서 동적으로 데이터를 채울 수 있습니다.

MyBatis ?

MyBatis는 자바 애플리케이션에서 데이터베이스와 상호작용하기 위한 퍼시스턴스 프레임워크입니다. SQL 쿼리를 XML 파일이나 애노테이션으로 관리하며, 복잡한 매핑을 지원합니다. 예를 들어, 데이터베이스에서 복잡한 쿼리를 작성하고 이를 자바 객체와 매핑하여 사용할 수 있습니다.

Maven?

Apache Maven은 자바 프로젝트 관리 및 빌드 자동화 도구입니다. 프로젝트의 빌드, 의존성 관리, 배포 등을 자동화하여 개발 효율성을 높입니다. 예를 들어, 프로젝트의 라이브러리 의존성을 관리하고, 빌드 과정을 자동화하여 일관된 빌드 환경을 제공합니다.

SVN?

SVN(Subversion)은 소스 코드 버전 관리를 위한 도구로, 개발자들이 코드 변경 사항을 추적하고 협업할 수 있게 합니다. 코드의 히스토리를 관리하며, 이전 버전으로의 롤백이 가능합니다. 예를 들어, 여러 개발자가 동시에 작업할 때 충돌을 관리하고, 변경 내역을 추적하여 협업을 원활하게 합니다.

Jenkins?

Jenkins는 CI/CD(Continuous Integration/Continuous Deployment) 도구로, 자동화된 빌드, 테스트, 배포를 지원하여 소프트웨어 개발의 효율성을 높입니다. 예를 들어, 코드가 변경될 때마다 자동으로 빌드하고 테스트하여, 버그를 조기에 발견하고 배포할 수 있습니다.

MSA가 뭔지 아는가?

MSA (Microservices Architecture): 애플리케이션을 작은 독립적인 서비스들로 구성하여 개발하고 배포하는 아키텍처입니다. 각 서비스는 독립적으로 배포 가능하며, 다른 서비스와 통신하기 위해 REST API, 메시지 큐 등을 사용합니다.

쓰레드에서 로깅하는 방법?

쓰레드에서 로깅을 수행할 때는 Log4j, SLF4J, java.util.logging과 같은 로깅 프레임워크를 사용합니다. 쓰레드 안전성을 보장하기 위해 각 쓰레드는 독립적인 로거 인스턴스를 사용하거나 동기화 메커니즘을 적용해야 합니다.

Flask

Flask:
Flask는 파이썬을 위한 마이크로 웹 프레임워크로, 간단하고 유연한 웹 애플리케이션 개발을 지원합니다. 최소한의 기능만 포함되어 있으며, 필요에 따라 확장할 수 있습니다. 예를 들어, 작은 규모의 웹 애플리케이션이나 API 서버를 빠르게 개발할 수 있습니다.

Node.js?

Node.js는 자바스크립트 런타임 환경으로, 서버 사이드 애플리케이션 개발을 지원합니다. 비동기 이벤트 기반 아키텍처를 통해 높은 성능과 확장성을 제공합니다. 예를 들어, 실시간 채팅 애플리케이션이나 높은 트래픽을 처리하는 서버를 개발할 때 사용됩니다. Node.js를 사용하면 자바스크립트를 서버에서도 사용할 수 있습니다.

서버 사이드 (Server-side)란?

서버 사이드는 서버에서 실행되는 코드 또는 작업을 의미합니다. 예를 들어, 사용자가 웹 페이지에서 데이터를 입력하면, 서버 사이드 코드가 이 데이터를 처리하고, 데이터베이스에 저장하거나 다른 작업을 수행합니다. 이는 보안과 성능 측면에서 중요합니다. 예를 들어, 사용자의 로그인 정보 검증, 데이터베이스 쿼리 처리 등이 서버 사이드에서 이루어집니다.

반응형