본문 바로가기
개발 관련 끄적임

[개발자 장고] 개발자 전공 면접 정리

by 코딩개발 2023. 7. 17.
728x90
반응형

 

OS?
시스템의 자원과 동작을 관리하는 소프트웨어
프로세스, 저장장치, 네트워킹, 사용자, 하드웨어 관리

메모리 구조
메모리 공간 종류 4가지 : Code(실행할 프로그램의 코드), Data(전역/정적 변수), Heap(사용자가 직접 관리하는 역역/동적할당), Stack(함수의 호출정보, 지역변수, 매개변수 저장)

힙 영역 : 언타임에 크기가 결정됨
스택 영역 : 컴파일 타임에 크기가 결정됨

프로세스 : 실행중인 프로그램(메모리 공간 독립) - 여러개의 스레드를 가지고 있다. 메모리와 cpu를 프로세스마다 할당 받아 사용
스레드 : 프로세스 안 실행 단위(메모리 공간 stack만 독립/나머지는 공유) - 프로세스 안에서 실행되는 흐름 단위. 메모리와 cpu를 공유해서 사용

스케쥴러 - FCFS, SJF, SRT, Priority Scheduling, Roud Robin
비선점 vs 선점

가상메모리 - 사용하는 부분만 메모리에 올리고, 나머지는 디스크에 보관

데드락 - 프로세스가 자원을 얻지 못해 다음 작업을 못하는 상태



네트워크?
OSI 7계층 - 인터넷 환경에서 통신하기 위해 네트워킹에 대한 표준을 7계층으로 나눈 것
응용, 표현, 세션, 전송, 네트워크, 데이터 링크, 물리 계층

TCP : 신뢰성 높은 프로토콜
UDP : 빠른 프로토콜

IP : 인터넷에서 데이터 전달 프로토콜

DNS : 도메인 주소를 IP주소로 변환해주는 시스템

로드밸런서 : 서버의 부하를 분산시켜주는 시스템


데이터베이스?
DBMS : DB 내 데이터에 접근하도록 도와주는 시스템

트랜잭션 특징 ACID
A:원자성
C:일관성
I:격리성
D:지속성

NOSQL : Not Only SQL의 약자로, SQL을 보완한다는 의미

파티셔닝 : 테이블을 컬럼 단위로 나누어 관리하는 기법

샤딩 : 테이블을 row 단위로 분산하여 저장하는 방법


스프링

객체를 관리할 수 있는 컨테이너를 제공하는 프레임

 

DI : Dependency Injection의 약자로 의존성 주입을 의마합니다.
객체간의 의존관계를 미리 설정해두면 스프링 컨테이너가 의존관계를 자동으로 연결해줍니다.
이렇게 되면 직접 의존하는 객체를 생성하거나 검색해서 가져올 필요가 없어서 결합도가 낮아지는 장점이 있습니다.
(컨테이너가 의존관계를 자동으로 연결)

IoC : Inversion of Control의 약자로 제어의 역전을 의미합니다.
제어권이 사용자에게 있지 않고, 프레임워크에 있어서 필요에 따라서 사용자의 코드를 호출하게 됩니다.
스프링에서는 인스턴스의 생성부터 소멸까지 개발자가 아닌 컨테이너에서 대신 관리하게 됩니다.
(제어권이 사용자에게 있지 않고, 프레임워크에 있음)

ORM
Object Relational Mapping의 약자로 관계형 데이터베이스를 OOP언어로 변화해주는 기술입니다.
비즈니스 코드가 DB테이블에 바로 접근하게 도와줍니다.
(객체와 테이블을 매핑)

JPA
ORM을 위해 자바에서 제공하는 API입니다.
자바 객체와 DB테이블의 매핑하고 구현체로는 하이버네이트가 있습니다.

ORM, JPA, Hibernate 장단점
비즈니스 로직에 집중하고 객체중심의 개발을 할 수 있게 됩니다.
메서드를 호출하는 것만으로 쿼리를 수행해서 생산성이 향상되고, 유지보수 비용이 줄어듭니다.
특정 DB에 의존적이지 않다.
단점으로는 직접 SQL을 호출하는 것보다는 조금 느리고 복잡한 쿼리는 메서드로 처리가 힘듭니다.


WEB
브라우저에서 DNS 서버에서 도메인명으로 IP주소를 가져옵니다.
HTTP Request메시지를 작성하고 OS의 프로토콜 스택에 메시지 전송을 의뢰합니다.
프로토콜 스택이 LAN에 제어정보를 붙인 패킷을 LAN 어댑터에 넘기게 되고 LAN 어댑터는 이것을 전기신호로 변환시켜 LAN케이블로 송출합니다.
송신한 패킷은 허브,스위치,라우터를 경우해서 프로바이더에게 전달이 됩니다.
그러면 패킷은 수많은 엑세스 회선을 통해 POP를 거쳐서 인터넷 핵심부에 들어가게 되고
많은 고속 라우터들 사이로 패킷이 상대방 서버까지 도달하게 됩니다.
서버측의 LAN이 도착하게 되면 방화벽이 패킷을 검사하게 되고 이상이 없을 경우에 캐시서버가 먼저 응답 데이터가 있는지 확인하게 됩니다.
없을 경우에는 웹서버에 전송을 하고, 패킷이 웹서버에 도착을 하면 프로토콜 스택은 패킷을 추출해서 WAS에 전달을 합니다.
WAS는 응답메시지를 만들어서 다시 클라이언트로 보내게 되는데 이대는 이미 말씀드린 방법 대로 다시 클라이언트에게 전달하게 됩니다.

쿠키와 세션
HTTP는 상태와 연결에 대한 정보를 저장하지 않아, 이를 도와주는 것이 쿠키와 세션이다.
쿠키는 사용자 정보가 기록된 텍스트 파일인데 브라우저에 저장되면서, 통신할 때(HTTP)헤더에 포함되어 전송하게 됩니다.
통신중에 쿠키 정보다 노출될 수 있기 때문에 보안에 취약하다는 특징이 있습니다.
세션은 사용자의 정보를 서버에 저장하는데 브라우저가 종료될 때까지 유지되게 됩니다.
서버에 저장되기 때문에 보안이 강하다는 특징이 있습니다.

REST API, RESTful이란?
REST API는 REST를 기반으로 서비스 API를 구현한 것이다.
REST라는 것은 자원의 표현, 즉 이름으로부터 자원의 정보를 주고받는 것을 의미합니다.
그래서 자원을 URI로 표현하고 자원에 대한 행위는 HTTP Method로 표현한 것이 REST API입니다.
RESTful은 REST의 원리를 잘 따르는 시스템인데요 자원을 URI로, 행위에 맞는 적절한 HTTP method를 사용한 것이 RESTful한 메소드 입니다.


싱글톤
인스턴스를 한개만 생성하는 패턴
디비 커넥션, 스레드 풀 객체를 생성할 때 사용

팩토리 메소드 패턴
객체를 직접 생성하지 않고 객체를 생서하는 Factory객체를 사용하는 패턴
장점으로는 직접 객첼르 생성하는 것을 막아줘서 결합도를 낮춰주는 효과

어댑터 패턴
어댑터를 사용해서 호환되지 않은 인터페이스를 호환되도록 하는 패턴


참고

https://www.youtube.com/@developer_jango/videos

728x90
반응형

댓글