본문 바로가기
개발/개발자 취업준비

[개발자 기술면접] 백엔드 개발자라면 반드시 알아야할 개발지식 모음

by 코딩하는짱구 2023. 10. 2.
반응형

웹 개발 분야에서 백엔드 개발자의 역할은 핵심적이며 복잡합니다. 사용자는 웹 애플리케이션을 사용할 때 앞면에서 보이는 인터페이스만을 다루지만, 백엔드 개발자는 배후에서 시스템을 설계하고 구축하는 일을 맡습니다. 백엔드 개발자로서 취업을 준비하시거나, 업무를 하고계시다면 아래 상식은 필수로 알아야겠죠?

 

백엔드 개발자라면 반드시 알아야할 개발지식 모음

 

1. NoSQL과 RDBMS의 특징과 차이점에 대해서 장, 단점을 들어 설명해주세요.

답: NoSQL은 비관계형, RDMBS는 관계형 데이터 베이스 입니다. NoSQL은 RDBMS와 달리 형태가 자유롭고 확장성이 좋고 빅데이터를 다루기에 적합하다는 장점이 있고, 데이터가 규격화 되어있지 않다는 단점이 있습니다.

반면에 RDBMS는 데이터 형태가 규격화 되어있어서 데이터 베이스로서 데이터를 효율적으로 분류, 정렬하고 탐색할 수 있다는 장점이 있고, 반드시 스키마 규격에 맞춰서 데이터를 다뤄야 한다는 단점이 있습니다. 

*DBMS 와 관련된 질문 트랜잭션의 4가지 성질-> ACID 원자성, 일관성, 독립성, 영속성 알아두기

 

 

2. MVC 패턴에 대해서 설명해주세요.

답: MVC 패턴이란 애플리케이션을 Model-View-Controller 세가지 역할로 구분하여 개발하는 방법론 입니다. 

사용자가 컨트롤러를 조작하면 컨트롤러는 모델을 통해 데이터를 가져오고 그 데이터를 바탕으로 시각적인  view 를 사용자에게 전달하게 됩니다. 이를 통해 사용자 인터페이스로부터 비즈니스 로직을 분리하여 애플리케이션 이면의 비즈니스 로직을 분리할 수 있고 서로 영향 없이 로직을 고칠 수 있는 앱을 만들 수 있게됩니다. 

 

위 개념을 WEB에 적용시:
1. 사용자가 웹사이트에 접속 
2. Controller가 사용자가 요청한 웹페이지의 Model을 호출 
3. Model은 데이터를 제어한 후에 그 결과를 리턴
4. Controller가 Model이 리턴한 데이터를 View 에 반영
5. 데이터가 반영된 View 가 사용자에게 보여짐

 

 

3. RDBMS의 정규화에 대해서 설명해주세요.

정규화란 데이터의 중복을 없애고 최적화하는 단계입니다. 정규화는 원자값을 지정하고, 부분함수, 이행함수 등을 제거하며 단계적으로 이행되는데 이는 결과적으로 데이터의 무결성과 일관성을 보장하기 위함입니다. 

*데이터의 무결성(Integrity)이란? 데이터가 정확하고 일관되게 유지되는 상태

 

 

4. Primary Key, Foreign Key에 대해 설명해주세요. 

PK는 RDBMS 테이블에서 변하지 않는 대표 키이며 FK는 외래키로서 테이블간에 연결키 입니다. 주요키와 외래키를 잘 설정해주어야 테이블간의 관계를 효율적으로 정의하고 관리할 수 있습니다. 

 

 

5. HTTP 메서드에 대해 설명해주세요. 

HTTP 메서드란 클라이언트와 웹서버간의 통신을 위한 프로토콜 입니다. 대표적으로 POST, GET, PUT, DELETE가 있는데, CRUD 라고도 하며 Restful API는 이런 HTTP메서드를 기반으로 설계됩니다. 

 

 

6. CORS(Cross Origin Resource Sharing) 에 대해 설명해주세요. 

HTTP 는 기본적으로 출처가 다른 통신은 보안상 제한합니다. 웹 애플리케이션에서 다른 출처의 데이터나 서비스에 접근해야할 때, 웹 서버가 브라우저에게 다른 출처의 웹 페이지가 서버의 리소스에 접근할 수 있게 해주는 것이 CORS 입니다. 웹 서버에서 특정 HTTP 헤더를 사용하여 설정합니다. 

 

 

7. 브라우저의 작동방식에 대해서 설명해주세요. 

사용자가 자원을 서버에 요청하면 웹 브라우저에서 서버에서 돌려준 자원을 브라우저에 표시합니다. 

사용자가 주소창에 URL을 입력하면, 브라우저는 DNS 조회, 즉 페이지의 IP주소를 검색합니다. IP주소를 알고난 후에는 브라우저가 서버와 TCP/IP 연결을 설정하고 서버로 HTTP 요청을 보냅니다. 서버는 요청을 받은 뒤 요청된 리소스를 브라우저로 전송해줍니다. 브라우저는 응답으로 받은 HTML 문서를  파싱하여 DOM트리를 만들고, CSS를 파싱하여 CSSOM 트리를 만듭니다. 이 둘을 결합하여 렌더링 트리를 만들고 렌더링을 통해 화면에 텍스트, 이미지, 비디오 등을 그려 사용자에게 표시합니다. 

 

 

8. 쿠키와 세션의 개념과 차이를 설명해보세요. 

쿠키와 쿠키는 Stateless한 http 통신에서 사용자 정보를 보존하기 위해 사용됩니다. 쿠키는 클라이언트 측에 저장되는 작은 데이터 조각이며, 세션은 서버측에 저장되며, 클라이언트에는 세션 식별자만 전송 됩니다. 서버는 세션 식별자를 통해 사용자를 식별하고 사용자의 데이터를 관리합니다. 세션을 추가적으로 사용함으로써 보안을 강화할 수 있고, 서버에 데이터 저장 공간을 확보할 수 있습니다. 

쿠키-> 한번 로그인 하면 로그인 정보가 쿠키저장소에 저장되는 것 id: 변수정 pw:1234 즉 쿠키저장소에 id, pw

세션-> 로그인 후 쿠키저장소에 id, pw가 아닌 세션 id:aaaa가 저장되는것, 추후에 세션id: aaaa 를 통해 내 id, pw를 확인 
즉 쿠키저장소에 session id, 서버에 id, pw(사용자정보)

 

 

9. TCP/UDP에 대해서 설명해주세요. 

TCP/UDP 모두 데이터를 보내기 위해 사용하는 프로토콜 입니다. 

 

TCP는 컴퓨터 간 접속과 송수신이 보장되는 환경에서 진행되는 방식입니다.
정보를 제공하는 서버와 정보를 요청하는 클라이언트간 3-way 과정을 통해 연결을 설정하고 4-way로 연결을 해제합니다.
TCP는 데이터 전송의 신뢰성을 보장하고 연결지향적입니다. 또한 흐름 제어와 혼잡 제어 기능을 제공하여 네트워크 혼잡을 방지하고 효율적인 데이터 전송을 지원합니다. 이메일, 파일 전송, 데이터 베이스 관리 시스템 등과 같이 신뢰성이 요구되는 상황에 사용됩니다. 

 

TCP

 

UDP

 

UDP는 데이터 전송의 신뢰성이 보장되지 않으며 비연결성 입니다. 즉 서버가 연결이 되지 않아도 패킷전송이 가능합니다. TCP보다 경량화 되어있어 빠른 데이터 전송에 사용되며 오디오 스트리밍, 온라인 게임 등에서 사용됩니다. 

 

 

10. HTTP, HTTPS의 차이점에 대해 설명해주세요. 

HTTP 통신은 기본적으로 보안되지 않습니다. 이를 보완하기 위해 HTTPS를 사용하는데, HTTPS 에서는 SSL, TLS(인증서)를 사용하여 데이터를 암호화 합니다. 

 

 

11. DI, IoC에 대해 설명해주세요. 

DI란 Dependency Injection 으로 의존성 주입을 뜻합니다. 하나의 코드가 다른 코드에 의존하는 상태를 만들 때 사용합니다. 즉 A라는 클래스가 클래스 B를 사용하고 있을 때 A는 B에 의존적이며 외부에서 B 클래스의 Instance를 A에 주입해준다는 뜻입니다. 

IoC란 제어의 역전을 뜻합니다. 즉 개발자가 직접 의존성을 제어하던 것을 외부에서 결정하는 것. 

 

 

12. OSI 7계층에 대해 아는대로 설명해주세요. 

OSI 7계층이란 네트워크에서 통신이 일어나는 과정을 7단계로 나눈 것을 말합니다. 
물리계층, 데이터 링크 계층, 네트워크 계층, 전송계층, 세션 계층, 표현 계층, 응용 계층 으로 나뉩니다.

  1. 물리계층 : 물리적인 연결 (전압, 케이블, 라우터 등)
  2. 데이터 링크 계층 : 이더넷, MAC 주소 등과 관련
  3. 네트워크 계층 : IP 주소, 라우터 등과 관련
  4. 전송 계층 : TCP, UDP와 관련
  5. 세션 계층 : 세션 설정, 유지, 종료 , 데이터 동기화 관련
  6. 표현 계층 : 데이터의 인코딩, 암호화 등과 관련
  7. 응용 계층 : 사용자와 프로그램간의 통신, 웹 브라우저와 이메일 클라이언트 등과 관련 

 

 

 

13. 객체지향 프로그래밍이란 무엇이고 어떻게 활용할 수 있나요? 

객체지향 프로그래밍이란 프로그램을 객체 단위로 설계하고 개발하는 방식을 의미합니다. 객체지향 프로그래밍의 개념은 은 객체, 클래스, 상속, 다형성, 캡슐화 입니다. 객체지향 프로그래밍을 통해 현실세계를 모델링할 수 있고 유지보수성이 향상되며, 객체 단위의 테스트와 팁 협업을 용이하게 만듭니다. 

 

 

14. 세션 기반 인증과 토큰 기반 인증의 차이에 대해 설명해주세요. 

세션 기반 인증이 인증 정보를 서버에 저장하는 방식이라면 토큰 기반 인증은 인증 정보를 사용자가 들고있는 방식 입니다. 인증 정보는 토큰의 형태로 브라우저에 저장되며 암호화된 토큰을 HTTP의 Authorization 헤더에 실어보내면 서버가 확인 후 사용자를 인가한다. 

**아래 블로그 너무너무 잘 정리해놓으심..

https://hudi.blog/session-based-auth-vs-token-based-auth/

 

세션 기반 인증과 토큰 기반 인증 (feat. 인증과 인가)

인증과 인가 세션기반 인가와 토큰기반 인가에 대해 알아보기 이전에 먼저, 인증과 인가가 무엇인지 부터 알아야할 필요가 있다. 인증과 인가를 같거나 비슷한 개념이라고 생각하는 사람들이

hudi.blog

 

15. GET,POST의 개념과 함께 데이터 흐름에 대해서 설명해주세요. 

GET 은 URL에 데이터를 포함하여 조회를 위한 요청이며, POST는 HTTP 본문에 데이터를 담아 쓰기 작업을 합니다. GET은 길이제한이 있으며 민감한 정보에 적합하지 않고, POST 는 길이 제한이 없으며 보안이 더 강화됩니다. 두 방식은 클라이언트와 서버간의 데이터 교환을 위한 HTTP 메서드이지만 데이터의 위치와 사용 목적에 차이가 있습니다. 

 

반응형