백엔드에대한 전반적인 기초지식향상과 면접준비를위한 스터디입니다.
- 웹 통신의 큰 흐름: https://www.google.com/을 접속할 때 일어나는 일.
- TCP와 UDP의 각각의 기능과 차이점 대해서 설명해보세요.
- OSI 7계층과 TCP/IP 4계층에 대해 설명해보세요.
- 라우팅 기능 및 웹 서버 소프트웨어(Apache, Nginx)는 OSI 7계층 중 어디서 작동하는지 설명해보세요.
- 웹 소켓(WebSocket)이란 무엇이며, 언제 사용하나요?
- 공인(public) IP와 사설(private) IP의 차이에 대해 설명해주세요.
- CDN(Content Delivery Network)이란 무엇이며, 왜 사용하나요?
- 상태비저장(Stateless) 프로토콜이란 무엇인가요?
- 쿠키(Cookie)와 세션(Session)의 차이점에 대해 말해주세요.
- CORS란 무엇이며 이것에 대해서 설명해보세요.
- 참고자료: 유튜버 쉬운코드 네트워크
- 프로세스에 대해 설명해주세요.
- 스레드에 대해 설명해주세요.
- 멀티프로세스와 멀티스레드에 대해 설명해보세요.
- 컨텍스트 스위칭에 대해 설명해보세요.
- 교착상태와 기아상태의 해결방법 및 스핀락, 세마포어, 뮤텍스에 대해 설명해주세요.
- 프로세스 스케줄링이란 무엇이며, 어떤 알고리즘들이 사용되나요?
- 동기와 비동기의 차이(블로킹, 넌블로킹) / 장단점에 대해 설명해보세요.
- Thread-safe 하다는 의미와 설계하는 법을 설명해보세요.
- 프로세스 동기화에 대해 설명해보세요.
- 가상 메모리에 대해 설명해보세요.
- 캐시의 지역성에 대해 설명해보세요.
- 운영체제의 주요 기능은 무엇인가요?
- 부팅 과정에 대해 설명해보세요.
- 메모리 단편화(Fragmentation)란 무엇이며, 이를 해결하기 위한 방법은 무엇인가요?
- 파일 시스템의 역할과 종류에 대해 설명해보세요.
- I/O 관리와 I/O 스케줄링에 대해 설명해보세요.
- 스왑 공간(Swap Space)과 그 역할에 대해 설명해보세요.
JOIN에 대한 설명과 원리 그리고 종류.
RDBMS vs NOSQL에 대해서 설명해주세요.
Redis에 대해서 간단히 설명해주세요.
Redis와 Memcached의 차이에 대해서 설명해주세요.
MongoDB에 대해서 간단히 설명해주세요.
CAP 이론과, Eventual Consistency에 대해서 설명해주세요.
postgresql과 mysql의 차이점.
보통의 자료구조/알고리즘적 지식은 코딩테스트로 검증합니다.
하지만 아래의 개념을 적어도 이해는 한다고 생각하니, 혹시 모르는 부분이 있을 경우 학습을 권장합니다.
CSRF(Cross-Site Request Forgery)와 XSS(Cross-Site Scripting)의 차이점과 방지 방법에 대해 설명해주세요.
비대칭키 암호화, 대칭키 암호화에 대해 간단히 설명해주세요.
XSS에 대해서 간단히 설명해주세요.
CSRF에 대해서 간단히 설명해주세요.
스크립트 언어와 컴파일 언어를 나열하고 차이점을 설명해주세요.
List와 Tuple의 차이에 대해 설명해주세요.
파이썬 데코레이터에 대해 아는대로 설명해주세요.
MRO에 대해 설명해주세요.
Magic Method에 대해 설명해주세요.
__new__와 __init__의 차이에 대해 설명해주세요.
__repr__와 __str__의 차이에 대해 설명해주세요.
r string과 u string에 대해 설명해주세요.
Call by Assignment에 대해 설명해주세요.
파이썬에서의 접근제어지시자에 대해 아는대로 설명해주세요.
global과 nonlocal 키워드의 차이에 대해 설명해주세요.
classmethod와 staticmethod의 차이에 대해 설명해주세요.
파이썬의 주요 특징은 무엇인가요?
람다 함수(lambda function)란 무엇이며, 언제 사용하나요?
파이썬에서 예외 처리 방법에 대해 설명해 주세요.
파이썬의 모듈(Module)과 패키지(Package)에 대해 설명해 주세요.
정규 표현식(Regular Expressions)을 사용하여 문자열을 처리하는 방법은 무엇인가요?
파이썬의 with 구문에 대해 설명해 주세요.
파이썬의 `*args`와 `**kwargs`는 무엇이며, 어떻게 사용하나요?
파이썬에서 데이터베이스에 접근하는 방법에 대해 설명해 주세요.
파이썬의 정적 타이핑(Static Typing)을 지원하는 방법은 무엇인가요?
파이썬에서 메타 클래스(Metaclass)는 무엇이며, 어떻게 사용하나요?
파이썬의 `deepcopy`와 `shallow copy`의 차이는 무엇인가요?
파이썬에서의 변수 범위(Scope)와 네임스페이스(Namespace)에 대해 설명해주세요.
파이썬의 예외 클래스 계층 구조에 대해 설명해주세요.
파이썬의 다중 상속 문제를 해결하기 위한 방법은 무엇인가요?
파이썬의 duck typing에 대해 설명해주세요.
파이썬에서의 'Non-Local' 변수는 무엇인가요?
파이썬에서의 `super()` 함수는 어떻게 작동하나요?
- 파이썬의 동적 타이핑(Dynamic Typing)과 정적 타이핑(Static Typing)의 차이는 무엇인가요?
- 파이썬의 인터프리터(Interpreter)와 컴파일러(Compiler)의 차이는 무엇인가요?
- 파이썬의 컴프리헨션(Comprehension) 종류에 대해 설명해주세요.
- 리스트 컴프리헨션(List Comprehension)이란 무엇인가요?
- 파이썬의 제너레이터(Generator)와 이터레이터(Iterator)의 차이점은 무엇인가요?
- 파이썬의 컨텍스트 매니저(Context Manager)와
with구문에 대해 설명해주세요. - 파이썬의
__slots__은 무엇이며, 언제 사용하나요? - 파이썬의
None타입은 무엇이고 어떻게 사용하나요? - 파이썬에서의 자료형 힌팅(Type Hinting)은 무엇이며, 어떻게 사용하나요?
- 파이썬의 프로퍼티(Property)와 게터(Getter), 세터(Setter)에 대해 설명해주세요.
- 파이썬의 문서화 도구(Documentation Tools)에 대해 설명해주세요 (예: Sphinx).
Go의 구조체(Struct)와 인터페이스(Interface)의 차이는 무엇인가요?
Go의 가비지 컬렉션(Garbage Collection)은 어떻게 작동하나요?
Go에서 인터페이스(Interface)는 어떻게 사용하나요?
Go에서 에러 처리 방법에 대해 설명해주세요.
Go의 빌트인 테스트 도구에 대해 설명해주세요.
Go 모듈(Module)이란 무엇인가요?
Go의 동시성(Concurrency)과 병렬성(Parallelism)의 차이는 무엇인가요?
Go에서 context 패키지는 언제 사용하나요?
Go의 panic과 recover에 대해 설명해주세요.
Go에서 HTTP 서버를 만드는 방법에 대해 설명해주세요.
gRPC에서 프로토콜 버퍼(Protocol Buffers)는 무엇이며, 어떻게 사용하나요?
gRPC에서 서비스 정의 파일(.proto 파일)은 어떻게 작성하나요?
gRPC의 스트리밍(Stream) 기능에 대해 설명해주세요.
gRPC의 보안(예: TLS/SSL) 설정 방법에 대해 설명해주세요.
gRPC의 로드 밸런싱(Load Balancing) 기능에 대해 설명해주세요.
gRPC의 인터셉터(Interceptor)란 무엇이며, 어떻게 사용하나요?
gRPC의 버전 관리(versioning) 방법에 대해 설명해주세요.
Apache Kafka란 무엇인가요?
+ Kafka의 주요 구성 요소는 무엇인가요?
+ Kafka의 프로듀서(Producer)와 컨슈머(Consumer)의 역할은 무엇인가요?
+ Kafka에서 토픽(Topic)과 파티션(Partition)의 개념에 대해 설명해주세요.
Kafka의 Zookeeper는 어떤 역할을 하나요?
Kafka의 리플리케이션(Replication)과 데이터 복제는 어떻게 이루어지나요?
Kafka에서 메시지의 오프셋(Offset)이란 무엇인가요?
- 싱글톤 패턴에 대해서 설명해주세요.
- 가교 패턴(브릿지 패턴)에 대해서 설명해주세요.
- 전략 패턴에 대해서 설명해주세요.
- 빌더 패턴에 대해서 설명해주세요.
- 팩토리 메서드 패턴에 대해서 설명해주세요.
- 퍼사드 패턴에 대한 예를 들어주세요.
테스트 코드에 대해서 어떻게 생각하고, 작성하나요?
TDD를 알고 있나요? TDD에 대해서 어떻게 생각하나요?
테스트 커버리지에 대해서 어떻게 생각하나요?
AWS 인프라를 구축해보았다면 설명해주세요.
로드 밸런서에 대해서 설명해주세요.
리버스 프록시에 대해서 설명해주세요.
Fault-tolerant(무정지) 시스템으로 가기 위해 필요한 방법에 대한 생각을 말해주세요.
제가 아직 도커, 쿠버네티스에 익숙하지 않아 공부가 좀 더 필요합니다.
관련해서 질문을 받아본적은 없으나, 일반적인 질문을 담아보았습니다.
Docker란 무엇이고 컨테이너 가상화를 왜 사용할까요?
컨테이너 환경에서의 디버깅은 어떤식으로 하며 상대적으로 어려운 점은 무엇인가요?
CI/CD가 무엇인가요? 왜 CI/CD가 장점이 될까요?
회사의 기술스택에 관심을 가져보세요. 학습능력이 좋음을 어떤식으로 보여줄 수 있을까요?
본인이 수행한 프로젝트를 유의미한 트래픽이 나올정도로 해본 경험을 높게 평가하는 회사가 많습니다.
두괄식으로 답변하도록 합시다. (사실 힘듭니다. 그렇게 될 수 있게끔 연습 또 연습!)
프로젝트를 수행할 때, 내가 이 기술을 단순히 좋아보여서 사용한 것이 아니라, 많은 고민을 했음을 보여주도록 하세요. 가장 간단한 질문으로는 '왜 그 기술을 사용했나요?', '그 기술 말고 다른 기술은 왜 사용하지 않았나요?', '대체할만한 기술이 있나요?' 등이 있습니다.