기술면접 준비 : CS 편

J-USER·2021년 1월 21일
1

면접준비

목록 보기
1/7
post-thumbnail

절차지향 프로그래밍 VS 객체지향 프로그래밍

  • 절차 지향
    1. 위에서 아래로 순차적으로 처리가 중요한 기법 (ex. C언어)
    1. 컴퓨터의 실제 처리 구조와 유사해서 빠름!🦾
    2. 순서가 바뀌면 에러가 나거나 결과가 동일하지 않을 수 있음😥
  • 객체 지향
    1. 현실 세계의 사물(객체) 처럼 모델링해 개발하는 기법 (ex. Java)
    1. 캡슐화, 상속, 다형성 등 다양한 기법 이용할 수 있음.
    2. But 절차 지향보단 느림 😥

RESTful API

정의 : HTTP통신요청을 Resource(url || res)와 Method(GET,POST..)로 표현해 특정한 형태(JSON || XML data...)로 전달하는 방식

TDD vs DDD

  • TDD(Test-Driven Development)
    1. 매우 짧은 개발-테스트-수정 사이클의 반복
    2. 테스트케이스와 코드를 작성하고 상황에 맞게 수정
    3. 요구사항 이해는 빠를지 몰라도 코드의 증가 등의 노력이 많이 듦😣
  • DDD(Domain-Driven Design)
    1. 도메인을 중심으로 설계하는 방법 (ex, dev-naver.com, naver.com...)
    2. 도메인에 따라 객체의 정보가 바뀔 수 있음
    3. MSA를 하면 용이한 설계 가능👍

MSA

정의: 1개의 시스템을 독리접으로 배포가능한 각각의 서비스로 분할. 각각의 서비스는 RESTful API를 통해 데이터를 주고받으며 1개의 큰 서비스를 구성

  • 장점
    1. 일부 서비스에 장애가 발생하여도 전체 서비스에 장애가 발생하지 않는다.
    2.각각의 서비스들은 서로 다른 언어와 프레임워크로 구성될 수 있다.
    3.서비스의 확장이 용이하다.

  • 단점
    1. 서비스가 분리되어 있어, 테스팅이나 트랜잭션 처리 등이 어렵다.
    2. 서비스 간에 RESTful API로 통신하기 때문에 그에 대한 비용이 발생한다.
    3. 서비스간의 호출이 연속적이기 때문에 디버깅이 어렵다.

메모리 구조

  • 코드 영역: 실제 동작할 프로그램의 코드가 저장되는 영역.

  • 데이터 영역: 프로그램의 전역, 정적 변수가 저장되는 영역.

  • 힙 영역: 개발자가 직접 관리할 수 있는 메모리 영역으로 코드에서 동적 할당을 하면 이곳에 저장 됨. (낮은 주소 -> 높은 주소 순)

  • 스택 영역: 함수의 호출 정보와 함께 지역 변수와 매개 변수가 저장되는 영역. 함수의 호출 정보를 스택 프레임 에 저장함 (높은 주소 -> 낮은 주소 순)

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 설명

메모리 릭에 대해서 설명

스택 영역과 힙 영역 특징, 차이점

profile
호기심많은 개발자

0개의 댓글