본문 바로가기

신입 개발자 면접 기초

(31)
Spring MVC 구조의 처리 과정을 설명해보시오. (MVC process) MVC 패턴의 처리 과정을 설명해주실수 있나요? [Spring MVC 일반적인 구조][Spring MVC 구조] 아주 적합한 그림은 없는 것같아서 직접 그리려고 했으나, 간단한 내용이라 판단하여 나중에 그림을 올리도록 하려고 한다. (그나마 내 느낌에 맞는 그림을 퍼옴) Spring에서 MVC 구조로 많이 구성하는데 그 처리 과정을 순서대로 설명하는 면접질문이 있다.Spring MVC 처리 순서1. 클라이언트(Client)가 서버에 어떤 요청(Request)을 한다면 스프링에서 제공하는 DispatcherServlet 이라는 클래스(일종의 front controller)가 요청을 가로챈다.(web.xml에 살펴보면 모든 url ( / )에 서블릿 매핑을하여 모든 요청을 DispatcherServlet이 ..
객체 지향 프로그래밍이 뭔가요? (꼬리에 꼬리를 무는 질문 1순위, 그놈의 OOP) 객체 지향 프로그래밍(Object Oriented Programming) 여러 소프트웨어 관련 IT기업 신입사원 기술면접에서 면접자들 긴장을 풀어줄 겸 워밍업으로 자주 나오는 질문이다. "객체 지향 프로그래밍에 대해 설명 한번 해주세요" 가장 기본인 질문이지만, 이것마저 대답을 못하면 첫인상이 나빠지는 결과를 만들 수 있기에 중요한 질문이다. 앞서 워밍업이라 표현했지만 답변에 따라 꼬리에 꼬리를 무는 모든 질문의 시작점이기도 하다. 객체 지향 프로그래밍(OOP)이 뭐에요? 객체 지향 프로그래밍은 컴퓨터 프로그래밍 패러다임 중 하나로, 프로그래밍에서 필요한 데이터를 추상화시켜 상태와 행위를 가진 객체를 만들고 그 객체들 간의 유기적인 상호작용을 통해 로직을 구성하는 프로그래밍 방법이다. 이러면 이제 아까 ..
데이터베이스 - Exclusive lock과 Shared lock의 차이 Exclusive lock과 Shared lock 운영체제에서 잠금(Lock)과 유사하게 데이터베이스에서도 잠금(Lock)이 있다.멀티 트랜잭션 환경에서 데이터베이스의 일관성과 무결성을 유지하려면 트랜잭션의 순차적 진행을 보장할 수 있는 직렬화 장치가 필요하다.예를들어 한 명이 도서관의 좌석을 예약하는 중에 다른 한 명이 같은 좌석을 예약할 수 없게하여 정확히 한 명만 좌석을 배정받을 수 있게 한다.이런 이유로 이런 기능을 하는 Lock 이라는 기술이 등장했다.다양한 격리수준이 존재하고 그에 따른 lock들이 많이 있지만 크게 두 가지로 정리한다.Exclusive lock (배타적 잠금) 쓰기 잠금(Write lock)이라고도 불린다.어떤 트랜잭션에서 데이터를 변경하고자 할 때(ex . 쓰고자 할 때) ..
OS - Context Switch(컨텍스트 스위치)가 무엇인가? Context Switching이 무엇인가? 멀티프로세스 환경에서 CPU가 어떤 하나의 프로세스를 실행하고 있는 상태에서 인터럽트 요청에 의해 다음 우선 순위의 프로세스가 실행되어야 할 때 기존의 프로세스의 상태 또는 레지스터 값(Context)을 저장하고 CPU가 다음 프로세스를 수행하도록 새로운 프로세스의 상태 또는 레지스터 값(Context)를 교체하는 작업을 Context Switch(Context Switching)라고 한다.질문에 대한 답변은 이정도로 하고 좀 더 명확하게 이해해본다.* Context Switching을 문맥 교환으로 번역하지 말자. Context는 무엇인가? 사용자와 다른 사용자, 사용자와 시스템 또는 디바이스간의 상호작용에 영향을 미치는 사람, 장소, 개체등의 현재 상황(상..
해시(hash)와 암호화(Encryption) 차이점, 사용 용도 해시(Hash)와 암호화(Encryption)의 차이점이 무엇인가요? 둘 다 암호화 기법이지만 Hash는 단방향 암호화 기법이고 Encryption은 양방향 암호화 기법이다.쉽게 설명하면 Hash는 평문을 암호화된 문장(텍스트)으로 만들어주는 기능을 하고,Encryption은 평문을 암호화된 문장(텍스트)로 만들어주는 기능을 하고 + 암호화된 문장을 다시 평문으로 만드는 복호화 기능도 한다.해시(Hash)는 어떻게 암호화가 이루어질까? 예시로 설명하면 평문의 비밀번호 "jeongpro1234"를 해시함수(해시 알고리즘)를 이용하여 고정된 길이의 암호화된 문자열로 바꿔 버리는 것이 해시를 이용한 암호화 기법이다.* 해시에서 알아야 할 것들- 해시 알고리즘 및 밑에서 얘기할 암호화 알고리즘은 종류가 다양하며..
메모리 단편화(Memory Fragmentation)가 무엇이고 왜 발생하는가? 메모리 단편화가 무엇이고 왜 발생하는가? 메모리 단편화 - RAM에서 메모리의 공간이 작은 조각으로 나뉘어져 사용가능한 메모리가 충분히 존재하지만 할당(사용)이 불가능한 상태를 보고 메모리 단편화가 발생했다고 한다.메모리 단편화는 내부 단편화와 외부 단편화로 구분 가능하다.내부 단편화(Internal Fragmentation)메모리를 할당할 때 프로세스가 필요한 양보다 더 큰 메모리가 할당되어서 프로세스에서 사용하는 메모리 공간이 낭비 되는 상황* 예를 들어 메모장을 켰는데 OS가 4kb를 할당해줬다. 그런데 사실상 1kb만큼만 사용하고 있을 때 필요 이상으로 프로세스가 메모리를 할당받았으므로 내부 단편화가 3kb만큼 생긴 것임.외부 단편화(External Fragmentation)메모리가 할당되고 해제..
웹 브라우저에서 HTML문서 렌더링 과정 (동작 순서) 웹 브라우저의 HTML문서 렌더링 과정 1. 불러오기로더(Loader)가 서버로부터 전달 받는 리소스 스트림을 읽는 과정.읽으면서 어떤 파일인지, 데이터인지 파일을 다운로드할 것인지 등을 결정한다.2. 파싱 (Phasing)웹 엔진이 가지고 있는 HTML/XML 파서가 문서를 파싱해서 DOM Tree를 만든다.3. 렌더링 트리 만들기DOM Tree는 내용을 저장하는 트리로 자바스크립트에서 접근하는 DOM객체를 쓸 때 이용하는 것이고 별도로 그리기 위한 트리가 만들어져야 하는데 그것이 렌더링 트리다. (그릴 때 필요없는 head, title, body태그등이 없음 + display:none 처럼 DOM에는 있지만 화면에서는 걸러내야할 것들을 걸러냄)4. CSS 결정CSS는 선택자에 따라서 적용되는 태그가 ..
Http와 Https 이해와 차이점 그리고 오해(?) HTTPS (feat. http) HTTPS에 대해 알아보기 전에 HTTP를 간단하게 설명할 수 있으면 좋다.HTTP는 HyperText Tranfer Protocol로 WWW상에서 정보를 주고 받는 프로토콜이다.클라이언트인 웹브라우저가 서버에 HTTP를 통해 웹페이지나 이미지 정보를 요청하면 서버는 이 요청에 응답하여 요구하는 정보를 제공하게 된다.결국, HTTP 는 웹브라우저(Client)와 서버(Server)간의 웹페이지같은 자원을 주고 받을 때 쓰는 통신 규약이다.http는 텍스트 교환이다. html페이지도 텍스트다. 바이너리 데이터로 되어있는 것도 아니고 단순 텍스트를 주고 받기 때문에 누군가 네트워크에서 신호를 가로채어 본다면 내용이 노출된다.이런 보안상의 문제를 해결해주는 프로토콜이 HTTP..