[기술면접 스터디] 절차지향/객체지향/함수형 프로그래밍, 시간복잡도/공간복잡도, Spring/SpringBoot

rara_kim·2023년 3월 1일
0

기술면접

목록 보기
7/9

절차지향, 객체지향, 함수형 프로그래밍이란 무엇이고 차이점은 무엇인가요?

절차지향 프로그래밍(Procedural Programming)은 일련의 처리 절차를 정해진 문법에 따라 순서대로 기술하는 프로그래밍 방법으로, 대표적인 언어로는 C언어가 있다.
절차지향 프로그래밍은 컴퓨터의 처리구조와 유사하기 때문에 실행속도가 빠르지만 유지보수가 어렵다는 단점이 있다.

객체지향 프로그래밍은 실세상의 물체를 객체로 표현하고 이들 사이의 관계, 상호 작용을 프로그램으로 나타내는 방법으로 객체를 추출하여 관계를 결정하고, 이들의 상호 작용에 필요한 메소드와 필드를 설계 및 구현한 프로그래밍 방법이다.
이미 잘 만들어진 클래스를 가져다 쓰면 되기 때문에 생산성이 높고 코드의 재사용성이 높다는 장점이 있지만, 여러 객체를 나누어서 설계해야하는 복잡성 때문에 아키텍처 설계시 시간이 많이 소요된다는 단점이 있다.

함수형 프로그래밍은 자료 처리를 수학적 함수의 계산으로 취급하고 상태와 가변 데이터를 멀리하는 프로그래밍 패러다임의 하나로 대표적 언어로는 SQL, Scala 등이 존재한다.
함수형 프로그래밍은 과정보다 결과에 관심이 많고 무엇이 실행될 지를 강조한다.
또한 수학적 함수의 개념에 기반하며 If-Else와 같은 조건문 혹은 반복문을 지원하지 않는다는 특징이 있다.



알고리즘에서 시간복잡도와 공간복잡도란 무엇인가? 그리고 이것들은 왜 중요한가?

시간 복잡도란 특정 알고리즘이 어떤 문제를 해결하는데 걸리는 시간을 의미한다.
같은 결과를 가져오는 코드라면 시간 복잡도가 작을수록 더 효율적인 알고리즘이라고 할 수 있다.

공간 복잡도란 작성한 프로그램이 얼마나 많은 메모리를 차지하는지 분석하는 방법이다.
하지만 최근 컴퓨터 성능의 발달로 인해 메모리의 여유 공간이 충분하기 때문에 공간 복잡도의 중요성이 예전에 비해서 많이 낮아졌다.

시간 복잡도의 경우 알고리즘을 잘못 구성하였을 경우 결과값이 나오지 않거나 현저하게 느린속도가 나오기에 최근에는 공간복잡도 보다는 시간 복잡도를 우선시하여 프로그램을 작성한다.



Spring과 Spring Boot의 차이점은 무엇인가?

Spring은 엔터프라이즈용 Java 애플리케이션 개발을 편하게 할 수 있게 해주는 오픈소스 경량급 애플리케이션 프레임워크이다. 동적인 웹 사이트를 개발하기 위한 여러가지 서비스를 제공하고 있다.

Spring은 기능이 많은만큼 환경설정이 복잡현 편이기 때문에 이것에 어려움을 느끼는 사용자들을 위해 나온 것이 SpringBoot 이다.
스프링 부트는 스프링을 사용하기 위한 설정의 많은 부분을 자동화 해주며, 스프링부트 starter 의존성만 추가해주면 바로 API를 정의하고 내장된 톰캣으로 웹 어플리케이션 서버를 실행할 수 있다.

차이점

  • 내장된 톰캣을 사용하기 때문에 별도로 설치하거나 버전을 관리해야하는 수고가 적다.
  • starter가 대부분의 의존성을 관리해주기 때문에 버전 관리의 어려움이 없다.
    • starter: 특정 목적을 달성하기 위한 의존성 그룹
  • XML 설정할 필요가 없다.
  • .jar 파일을 이용해 자바 옵션만으로 손쉽게 배포가 가능하다.

profile
느리더라도 꾸준하게

0개의 댓글