기술면접 - 프로그래밍 공통

개나뇽·2024년 4월 6일

기술면접

목록 보기
1/8

oop

  • 객체지향 프로그래밍으로 현실에 있는 사물의 속성과 기능을 프로래그밍하는 기법
  • 상속, 캡슐화, 정보은닉, 다형성을 제공해 재사용성과 유지 보수성이 높음

oop의 5대 원칙

  1. SRP(단일 책임 원칙) : 객체는 하나의 책임만 가져야 함
  2. OCP(개방 폐쇄 원칙) : 확장에 유연하며 변경에는 닫혀 있어야 함
  3. DIP(의존성 역전 원칙) : 구체화(구현 클래스) 보다는 추상화(인터페이스)에 의존해야 함
  4. LSP(리스코프 치환 원칙) : 상위 타입 객체를 하위 타입으로 변경해도 프로그램은 일관되게 동작해야 함
  5. ISP(인터페이스 분리 원칙) : 이용하지 않는 메소드에 의존하지 않게 인터페이스를 분리해야 함

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

절차지향 프로그램

  • 컴퓨터 처리 구조와 유사해 처리 속도가 빠른 프로그래밍 기법
  • C언어가 대표적
  • 코드의 순서가 중요해 바뀌면 동일한 결과가 보장되기 어려움

객체지향 프로그래밍

  • 현실의 사물을 객체로 모델링해 프로그래밍하는 기법
  • Java가 대표적
  • 캡슐화, 상속, 다형성 등과 같은 기법을 제공

함수형 프로그래밍

  • 부수효과가 없는 순수 함수를 이용한 기법
    - 부수 효과가 없다는 것은 데이터의 값을 변경하지 않고 객체 필드를 설정하는 작업을 하지 않는 함수
  • 불변 데이터, 함수가 일급 시민이라는 특징이 존재

메모리 구조

  • 코드 영역 : '실행할 프로그램의 코드가 저장되는 영역' 프로그램을 실행하면 OS가 HDD > 메모리로 코드를 로드, CPU는 코드 영역에 저장된 명령어를 하나씩 처리
  • 데이터 영역 : '프로그램의 전역 변수와 정적 변수 저장 영역' 프로그램 시작에 생성되어 종료시 소멸
  • 힙 영역 : '개발자가 직접 관리할 수 있는 메모리 영역, Java에서는 GC 대상' 이 공간에 메모리를 할당하는 것을 동적 할당이라고 함.
  • 스택 영역 : '함수의 호출과 같이 할당되어 지역 변수와 매개 변수의 저장 영역' 함수의 호출 정보를 스택 프레임이라 함

프레임워크와 라이브러리 차이

  • 프레임워크 : 전체적인 흐름을 프레임워크가 제어 (대표적으로 스프링)
  • 라이브러리 : 개발자가 흐름을 제어해 필요시 가져다 사용.

동기와 비동기

동기

  • 요청을 보내 실행이 끝나면 다음 동작을 처리하는 방식
  • 순서대로 진행되어 제어가 쉬움
  • 여러 요청의 동시 처리가 불가해 효율이 떨어짐
    ex) 콜센터 직원이 일하는 방식 진행중인 통화가 끝나야 다음 통화가 가능

비동기

  • 요청의 처리 여부와 상관없이 다음 요청을 실행하는 방식
  • 작업 완료까지 대기가 없어 효율적인 자원 사용 가능
  • 완료 작업의 결과 제어가 어려움
    ex) 한 사람에게 이메일을 보냈을 때 답변 여부에 상관 없이 이메일을 다시 보낼 수 있다.

SQL Injection

  • 공격자가 악의적인 의도를 가지고 SQL 구문을 삽입해 원하는 SQL을 실행하는 웹해킹기법

도커와 쿠버네티스

  • 도커는 소프트웨어 환경의 일관서 문제 해결을 위해 등장
  • 쿠버네티스는 도커로 구동되는 컨테이너 관리를 위한 기술

도커의 장단점

장점

  • 높은 이식성: 이미지 기반으로 동일한 환경을 제공해 환경 차이로 발생하는 문제를 방지
  • 높은 확장성: 독립 환경의 컨테이너에서 실행되어 여러 컨테이너의 조합 가능

단점

  • 개발 초기의 오버헤드
  • 리눅스 친화적

MSA

  • 시스템 구성요소가 한 프로젝트에 담긴 모놀리식 아키텍쳐의 한계점 극복
  • 1개의 시스템을 독립적으로 배포가능한 별개의 서비스로 분할
  • 각 서비스는 API 통신으로 데이터를 교환해 1개의 큰 서비스를 구성

장점

  • 일부 서비스에 장애가 발생해도 전체 서비스에 영향이 가지 않음
  • 각 서비스는 서로 다른 언어와 프레임워크로 구성될 수 있음
  • 서비스 확장에 용이

단점

  • 서비스 분리로 테스트, 트랜잭션 처리가 어려움
  • 각 서비스 간의 API 통신 비용 발생
  • 서비스 간의 연속적인 호출로 디버깅 및 에러 트레이싱이 어려움

출처

https://mangkyu.tistory.com/88
좋은 글 감사합니다!

profile
정신차려 이 각박한 세상속에서!!!

0개의 댓글