절차지향 프로그래밍 VS 객체지향 프로그래밍
- 절차 지향
1. 위에서 아래로 순차적으로 처리가 중요한 기법 (ex. C언어)
- 컴퓨터의 실제 처리 구조와 유사해서 빠름!🦾
- 순서가 바뀌면 에러가 나거나 결과가 동일하지 않을 수 있음😥
- 객체 지향
1. 현실 세계의 사물(객체) 처럼 모델링해 개발하는 기법 (ex. Java)
- 캡슐화, 상속, 다형성 등 다양한 기법 이용할 수 있음.
- But 절차 지향보단 느림 😥
RESTful API
정의 : HTTP통신요청을 Resource(url || res)와 Method(GET,POST..)로 표현해 특정한 형태(JSON || XML data...)로 전달하는 방식
TDD vs DDD
- TDD(Test-Driven Development)
- 매우 짧은 개발-테스트-수정 사이클의 반복
- 테스트케이스와 코드를 작성하고 상황에 맞게 수정
- 요구사항 이해는 빠를지 몰라도 코드의 증가 등의 노력이 많이 듦😣
- DDD(Domain-Driven Design)
- 도메인을 중심으로 설계하는 방법 (ex, dev-naver.com, naver.com...)
- 도메인에 따라 객체의 정보가 바뀔 수 있음
- MSA를 하면 용이한 설계 가능👍
MSA
정의: 1개의 시스템을 독리접으로 배포가능한 각각의 서비스로 분할. 각각의 서비스는 RESTful API를 통해 데이터를 주고받으며 1개의 큰 서비스를 구성
- 장점
1. 일부 서비스에 장애가 발생하여도 전체 서비스에 장애가 발생하지 않는다.
2.각각의 서비스들은 서로 다른 언어와 프레임워크로 구성될 수 있다.
3.서비스의 확장이 용이하다.
- 단점
- 서비스가 분리되어 있어, 테스팅이나 트랜잭션 처리 등이 어렵다.
- 서비스 간에 RESTful API로 통신하기 때문에 그에 대한 비용이 발생한다.
- 서비스간의 호출이 연속적이기 때문에 디버깅이 어렵다.
메모리 구조
-
코드 영역: 실제 동작할 프로그램의 코드가 저장되는 영역.
-
데이터 영역: 프로그램의 전역, 정적 변수가 저장되는 영역.
-
힙 영역: 개발자가 직접 관리할 수 있는 메모리 영역으로 코드에서 동적 할당을 하면 이곳에 저장 됨. (낮은 주소 -> 높은 주소 순)
-
스택 영역: 함수의 호출 정보와 함께 지역 변수와 매개 변수가 저장되는 영역. 함수의 호출 정보를 스택 프레임 에 저장함 (높은 주소 -> 낮은 주소 순)
Git vs Git Hub
-
Git : 로컬에서 관리되는 버전 관리 도구(VCS)로 코드 수정에 따른 버전을 관리해주는 시스템. (git 명령어)
-
Git hub: 클라우드 형식으로 관리되는 VCS 저장소 (commit , push, pull)
프로세스 vs 쓰레드
쓰레드 세이프가 무엇인가
쓰레드 간 통신은 어떻게 하나
멀티 쓰레딩 환경에서 동시성 제어 어떻게 하나
TCP vs UDP 차이점
HTTP 메소드 종류들 열거
Get vs POST , PUT, DELETE 설명해달라
HTTP vs HTTPS 차이점
DB 트랜잭션, 정규화 설명
알고있는 정렬 알고리즘 나열
아무것도 참조 안 하고 구현할 수 있는 정렬 알고리즘 나열
객체지향 프로그래밍 아는대로 설명
함수형 프로그래밍 아는대로 설명
페이지 교체 알고리즘 중 LRU 알고리즘 설명
해당 알고리즘을 구현하기 적합한 자료구조는?
동명이인이 존재하는 전화번호부를 개발할 때 적합한 자료구조는?
Array vs List 차이점
Hash Collision 설명
메모리 릭에 대해서 설명
스택 영역과 힙 영역 특징, 차이점