본문 바로가기

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

백엔드 개발자 역량관리 방식 (1) : 면접질문 일문일답 정리

[일문일답 정리배경]

  어떤 개념에 대해서  함축적으로 설명할 수 있어야 개념에 대한 충분한 이해가 있다고 할 수 있다. 그러한 맥락에서 면접에서 빈출되는 질문을 대상으로 3문장 이내로 답변하는 것을 목표로 한다. 

  백엔드 개발에서 CS 및 구현에 대해서 빈출되는 면접 질문을 모으고 그에 대해서 답변을 정리해나가는 것을 나의 공부방식으로 채택하겠다.  

  이를 통해서 나의 개념적 이해 성취도를 가시화하고 시장에서 경쟁력을 유지하고자 한다.

 

[현재 진척상황]

백엔드개발 일문일답.xlsx
0.01MB

 

[첨부파일의 일부 답변예시]

 

분류 질문 답변 관련내용정리
Restful API 설계란? Representational State Transefer로 자원의 '표현에 의한 상태전달'이라는 웹 내에서 리소스 접근방식 설계원칙. 플랫폼 독립적으로 설계되며,  1. 자원(Resource) : 계층 구조를 갖춘 URI로 식별하고 , 2. 행위(Verb) :  HTTP 메소드로 행위를 정의하며 3. 표현(Representation) : 자원을 Json처럼 언어/플랫폼 독립적으로 변환하여 표현 https://bsh6226.tistory.com/170
디자인패턴 CleanArchitecture란? 소프트웨어 시스템을 여러 계층으로 구분하고, 각 계층 간의 의존성 방향을 일관되게 안쪽으로 관리하는 것. 이를 위해서 의존성역전규칙, 계층간 책임분리를 준수합니다.  https://bsh6226.tistory.com/117
디자인패턴 OCP 코드의 변경을 가하지말고 새로운 클래스를 추가하라는 것.  외부계층이 내부계층을 위존할때 Interface를 활용해서 내부계층의 변화로 인해서 외부계층의 코드가 변하는 것을 방지 https://bsh6226.tistory.com/56
디자인패턴 DIP  1. 외부계층은 내부계층쪽으로 일관된 방향으로 의존하고 2. 내부계층은 외부계층을 의존할때는 implementation이 아니라 interface를 통해서 의존해야한다. 이는 내부계층이 변경이 잦은 외부계층에 종속되어 코드가 변경되는 것을 막기 위함이다. https://bsh6226.tistory.com/56
DB 트랜잭션이란? 데이터베이스에서 작업의 최소단위. 이 최소단위를 연장하고 늘려서 commit or rollBack의 단위를 늘리는 것을 일반적으로 트랜잭션 처리라고 한다. https://bsh6226.tistory.com/105
DB 격리수준이란? 두 트랜잭션이 서로 작업에 간섭하는 정도를 말한다. 두 트랜잭션이 간섭이 없으면 동시성이 낮아지고 간섭이 많을수록 동시성이 높아지는 trade off 관계이다. dirty read - irrepeatable read - phantomread 를 해결할 수록 격리수준이 높은 것으로 정의한다.  https://bsh6226.tistory.com/105
DB 격리수준의 구현방식 mysql에서 격리수준은 mvcc와 locking read(s-lock)로 구현한다. read uncommitted는 mvcc를 사용하지않고 read committed는 mvcc의 undolog를 사용하여 committed 데이터만 읽음.  repeatble read는 트랜잭션에서 최초 read할때 스냅샷을 구성하고 locking read에서 nextkeylock(s-lock)이 개입된다. serialization에서는 mvcc를 사용하지않고 locking read를 사용한다. https://bsh6226.tistory.com/105

 

  • 다형성이란
    • 역할과 구현을 분리하여 생각하는 방식. 코드로는 Interface와 Implementation을 분리하여 생성하는 것을 말한다. 클래스간 강한 결합을 제거하기 위해서 사용된다.
  • 스프링이란?
    • IOC와 DI.
  • JVM이란?
    • JDK에 포함된 가상머신으로 컴파일러로 변환된 .class Java Byte코드를 실행한다. JVM에서 각 운영체제에 맞게 기계어로 변환해주기때문에 Java는 운영체제와 관계없이 어디서든 동작가능함. class loader, execution engine, garbage collector로 이루어짐.
  • 트랜잭션이란?
    • DB 동작의 최소단위로 rollback의 단위가 된다. 
  • 격리수준이란?
    • 트랜잭션 간의 간섭과 동시처리 정도를 나타내는 기준. 
  • 격리수준에 따라서 Mysql 동작은 어떻게 되는지?
    •  
  • X-Lock과 S-Lock은 Mysql에서 어떻게 동작하는지?

 

 

 

기술면접 준비방법론

 

기술면접 자료정리

 

 

 

 

백엔드 개발자는 웹 애플리케이션과 서비스의 기반 인프라 개발에 중점을 두는 역할로, 데이터베이스 관리, 서버 스크립팅, 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

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

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

 

프로젝트 경험

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

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

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

 

 

 

 

  •  
  • 다형성이란
    • 역할과 구현을 분리하여 생각하는 방식. 코드로는 Interface와 Implementation을 분리하여 생성하는 것을 말한다. 클래스간 강한 결합을 제거하기 위해서 사용된다.
  • 스프링이란?
    • IOC와 DI.
  • JVM이란?
    • JDK에 포함된 가상머신으로 컴파일러로 변환된 .class Java Byte코드를 실행한다. JVM에서 각 운영체제에 맞게 기계어로 변환해주기때문에 Java는 운영체제와 관계없이 어디서든 동작가능함. class loader, execution engine, garbage collector로 이루어짐.
  • 격리수준이란?
    • 두 트랜잭션이 서로 작업에 간섭하는 정도를 말한다. 두 트랜잭션이 간섭이 없으면 동시성이 낮아지고 간섭이 많을수록 동시성이 높아지는 trade off 관계이다. dirty read - irrepeatable read - phantomread 를 해결할 수록 격리수준이 높은 것으로 정의한다. 
  • X-Lock과 S-Lock은 Mysql에서 어떻게 동작하는지?
    • s-lock은 locking read에서 주로 사용하며 여러 트랜잭션에서 공유가 가능하다. x-lock은 주로 쓰기 작업에서 사용되며 한 트랜잭션만 획득할 수 있으며 s-lock을 누가 획득중이면 기다려야한다. 
  • Java와 c,c++ 차이는?
    • 실행환경에서 차이가 난다. java는 java compiler를 통해서 jvm에서만 실행가능한 바이트코드로 변환된다. jvm은 실행환경에 맞추어 기계어로 변환한다. 반면, c는 컴파일 과정에서 바로 기계어로 컴파일되며 컴파일러는 실행환경에 맞추어 셋팅된다. 그리고 c는 하드웨어에 직접적으로 조정이 가능해서 세부적인 최적화가 가능함.
  • MVC 
    • Model, View, Controller를 분리하는 아키텍쳐이다. Model은 비즈니스 로직 및 데이터모델, View는 프레젠테이션, Controller는 둘 사이를 연결하는 역할을 한다. UI의 변경이 Model의 변경으로 이어지지 않도록 분리하는 역할을 한다.
  •