230609 TIL #107 기술 면접 스터디 - 9

김춘복·2023년 6월 8일
0

TIL : Today I Learned

목록 보기
107/571

230609 Today I Learned

기술 면접 스터디 마지막날.


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

절차지향 프로그래밍은 문제를 순차적으로 처리해 프로그램 전체가 유기적으로 연결되도록 개발하는 방식입니다. C언어가 대표적이고, 컴퓨터의 작업 처리 방식과 유사해 실행속도가 빠르지만, 모든 구성요소가 유기적으로 연결되어 유지보수가 힘듭니다.

객체지향 프로그래밍을 우리가 실제 세상을 인식하는 것 처럼 프로그래밍하기 위한 방법입니다. 프로그램을 상태와 행동을 가진 여러 객체로 구성해 객체간의 상호작용을 통해 데이터를 처리합니다. 코드의 재사용성이 높아 유지보수가 쉽다는 장점이 있지만 실행 속도가 절차지향에 비해 비교적 느립니다. 자바, C++, 파이썬이 대표적입니다.

함수형 프로그래밍은 자료 처리를 수학적 함수의 계산으로 취급하고 상태와 가변데이터를 멀리하는 프로그래밍 패러다임입니다. 스칼라, 클로저, 하스켈이 대표적이고 최근엔 자바나 자바스크립트에서도 함수형 프로그래밍의 문법을 쓸 수 있습니다. 함수단위의 코드 재사용이 수월하고 불변성을 지향해 프로그램의 동작을 예측하기 쉬워집니다. 상대적으로 난이도가 높고 일부 문제에는 적합하지 않을 수 있습니다.


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

우선 시간복잡도는 입력 크기에 따라 알고리즘이 실행되는 데 걸리는 시간을 측정해 알고리즘이 얼마나 빠르게 동작하는 지를 평가하는 지표로 쓰입니다. 절대적인 실행 시간이 아니라 알고리즘이 수행되는 데 연산들이 몇번 이루어 지는 지를 나타냅니다. 일반적으로 최악의 경우 걸리는 시간을 빅 O 표기법으로 표기합니다.

공간복잡도는 알고리즘이 실행되는 동안 사용하는 메모리 공간을 측정해 알고리즘이 얼마나 많은 자원이 필요한 지를 평가하는 지표로 쓰입니다. 공간복잡도도 일반적으로 빅 O 표기법을 사용합니다.

시간복잡도와 공간복잡도가 중요한 이유는 알고리즘의 효율성을 나타내는 지표이기 때문입니다. 이를 통해 알고리즘 간 비교를 할 수 있고, 실행시간을 예측해 더 효율적인 알고리즘을 골라서 사용할 수 있습니다.

profile
Backend Dev / Data Engineer

0개의 댓글