본문 바로가기

커리어일반/비전공개발자전직기

백엔드 개발자 공부할내용 (feat. 면접질문 모음)

 

 

백엔드 개발자는 웹 애플리케이션과 서비스의 기반 인프라 개발에 중점을 두는 역할로, 데이터베이스 관리, 서버 스크립팅, API 통합 등의 작업을 포함합니다. 백엔드 프로그래머가 갖춰야 할 주요 역량은 다음과 같습니다:

1. 프로그래밍 언어

백엔드 개발자는 하나 이상의 서버 사이드 프로그래밍 언어에 능숙해야 합니다. 일반적으로 사용되는 언어로는 다음이 있습니다:

  • Python: 읽기 쉽고 방대한 라이브러리를 자랑하며, 웹 개발, 데이터 분석, 인공 지능 등에 사용됩니다.
  • Java: 플랫폼 간 이식성이 뛰어나 대기업 환경에서 광범위하게 사용됩니다.

2. 데이터베이스 관리

데이터베이스 관리 능력도 필수적이며, 다음과 같은 지식이 요구됩니다:

  • 관계형 데이터베이스: MySQL, PostgreSQL, Oracle 등이 있으며, 데이터를 테이블과 행에 저장합니다.
  • NoSQL 데이터베이스: MongoDB, Cassandra, Redis 등으로, 대량의 비정형 데이터를 다루는 데 유용합니다.
  • 데이터베이스 쿼리 언어: SQL 같은 쿼리 언어는 관계형 데이터베이스와 상호작용하는 데 필수적입니다.

 

관련면접질문

 반정에 대해서 설명해주세요.

반정화 후 변경/삭제 이상 시 떻게 하실 요.

Double-checkelocking이 무이며는 이가 요.

DB 내부 구조에 대해서 설명해주세요.

transaction이 뭔지 설명해주세요.

isolation level에 대해서 설명해주세요.

DB에 배치 처리를 할 때 DB에 들어오고 있는 데이터는 어떻게 처리할지  생각해보신 바 있나요.

mongo에서 어떻게 eventuallconsistency를 보하는지.

DB 설계 해보신 경험 있는지, 만약 면 정규화는 어떤 식으로  해보나요.

DB 락의 종류에 대해서 설명해주세요.

MongoDB가 왜 이 빠른지 아시는 만큼 설명해주세요.

index가 뭔지 설명해주세요.

index에서 왜 Btree를 사하는지 설명해주세요.

RDBMS와 NoSQL의 차이에 대해서 설명해주세요.

래픽이 은 SNS 비스에는 어떤 데이터가 더 적합 요.

 

 

3. API (Application Programming Interfaces)

API를 효과적으로 사용하고 설계하는 능력은 필수적입니다. REST와 GraphQL은 일반적인 API 설계 모델입니다.

4. 버전 관리 시스템

코드베이스의 변경을 관리하고 다른 개발자와 협업하는 데 필수적인 버전 관리 시스템에 대한 지식이 필요합니다. Git이 가장 널리 사용되는 시스템입니다.

5. 프레임워크

Express.js (Node.js), Django 및 Flask (Python), Laravel 및 Symfony (PHP), Spring Boot (Java)와 같은 언어 관련 프레임워크에 익숙해야 개발 과정을 상당히 가속화할 수 있습니다.

 

관련면접질문

Gradle, gradle.wrapper의 차이와 각각을 왜 쓰는지 설명해주세요.

gradle에서 implement와 api(compile)의 차이를 설명해주세요.

 

6. 서버, 네트워크, 호스팅 환경

서버 작동 방식, 네트워크 보안 문제, 서버 관리 및 구성 방법에 대한 이해가 필요합니다.

 

 

7. 소프트 스킬

문제 해결 능력, 커뮤니케이션 능력, 시간 관리 능력 등의 소프트 스킬도 중요합니다.

8. 보안 관행

데이터를 보호하고 취약점을 방어하기 위한 웹 보안 관행에 대한 탄탄한 이해가 필요합니다.

지속적인 학습

기술이 빠르게 진화함에 따라 백엔드 개발자는 새로운 언어, 도구, 프레임워크 및 소프트웨어 개발에 대한 최선의 관행을 지속적으로 학습하고 최신 상태로 유지해야 합니다.

 

 

 

면접질문 리스트

브라우저에 naver.com을 치면 일어나는 일은 무엇인가요.

지진 같은 이 생하면 특정 어로 트래픽이 자기 게 니다. 
 이 때 이 부하를 이기 해 할 수 있는 일들에 대해서 설명해주세요.

기 비기 방식으로 을 어떻게 구현할 수 있을지 설해주세요.

 

 

Error와 Exception의 차이를 설명해주세요.

Checked Exception과 Unchecked Exception의 차이를 설명해주세요.

 

 

 

 

인 설해보나요. 떤 방법들이 있고 각각의 장단점은 어게 있을요.

웹 스토리지의 종류에 대해서 설명해주세요.

 

API 설: parameter로 boolean과 ENUM 을 사하는게 을지 이함께 설명해주세요.

Java에서 enum타입을 설할 때 어들을 신경쓰시는지 설명해주세요.

 

트를 진오픈소스를 분석해며 진다고 하는데,  상 깊부분이 있으셨나요.

 

 

<면접질문>

 

Java

객체지향의 개념과 객체지향의 3가지 특징

GC는 무엇인지? 어떤 알고리즘이 있는지? Stop the world에 대한 개념

 

Spring

Spring의 장점과 단점

DI와 AOP는 무엇이고 왜쓰는지?

vo, dto, bean은 무엇인지? (비추천, 후순위공부)

 

Thread

쓰레드와 프로세스의 차이

쓰레드의 메모리구조

쓰레드 간 공유되는 공간과 공유되지 않는 공간의 차이

메소드 내에서 선언된 변수가 위치하는 공간

컨텐스트 스위칭이 어떤 개념이고 스레드를 무작정 많이 생성하는게 도움이 되지 않는 이유

 

자료구조

해쉬라는 것은 무엇인지? 

해쉬함수가 무엇인지?

해쉬충돌이 무엇인지 (비둘기집 원리)

해쉬충돌을 해결하기위해서 어떤 방법을 쓸수있고 A는 어떤 장점과 단점, B는 어떤 장점과 단점

시간복잡도 개념으로 베이스해서 설명하기

 

배열과 연결리스트는 무슨 차이가 있고 어떤 연산들의 장단점

 

데이터베이스

인덱스란 어떤 자료구조고 어떤 특징과 장단점이 있는지

트랜잭션이나 아이솔레이션 레벨

 

네트워크

Rest api와 특징

status code에 대한 설명 (각 00번대의 의미

http protocol에 대해서 설명,  post와 get에 대한 차이

그 외 각각의 메소드가 어떤 설명이 있는지

header와 body는 어떻게 구성되어있는지

cookie와 세션이 어떤차이가 있고 어떻게 쓸수 있는지

 

Reddis

다른 스토리지와 비교해서 어떤 특징이 있는지

대칭키와 비대칭키가 어떤 차이가 있고 어떤 의미가 있는지

 

프로젝트 경험

프로젝트에서의 기술적 이슈과 해결경험

어떤 부분을 개선시킬 수 있는지

프로젝트시 팀원과의 갈등은 어떤게 있었고 어떻게 해결하는지