면접 스터디(절차지향/객체지향/함수형 프로그래밍, 시간복잡도/공간복잡도)

2023. 3. 1. 15:05스터디/면접

Q. 절차지향 / 객체지향 / 함수형 프로그래밍이란 무엇이고 차이점은 무엇인가?
절차지향, 객체지향, 함수형 프로그래밍은 각각 프로그래밍 패러다임입니다. 각 패러다임은 프로그래밍에서 문제를 해결하는 방식, 데이터의 구성 및 처리 방법 등에서 차이가 있습니다.
절차지향 프로그래밍은 순차적으로 처리되는 일련의 절차를 중심으로 프로그래밍하는 방식입니다. 프로그램을 실행하는 순서가 중요하며, 프로그램 내에서 데이터와 함수를 분리하여 관리합니다. 
객체지향 프로그래밍은 객체를 중심으로 프로그래밍하는 방식입니다. 객체는 데이터와 함수를 함께 묶어서 관리하는데, 이를 클래스라는 틀 안에 정의하여 사용합니다. 객체간의 상호작용을 통해 프로그램을 구성하며, 이러한 방식은 모듈화 및 재사용성을 높이고 유지보수를 용이하게 합니다.
함수형 프로그래밍은 함수를 중심으로 프로그래밍하는 방식입니다. 함수는 입력값을 받아 결과값을 반환하는데, 이를 이용하여 프로그램을 구성합니다. 병렬처리 및 추상화를 이용하여 프로그램의 가독성과 유지보수를 쉽게 합니다.

 

Q. 알고리즘에서 '시간 복잡도'와 '공간 복잡도'란 무엇인가? 그리고 이것들은 왜 중요한가?
시간 복잡도와 공간 복잡도는 알고리즘의 성능을 평가하는 데 사용되는 지표입니다.
시간 복잡도는 알고리즘이 문제를 해결하는 데 걸리는 시간을 나타내는 지표입니다. 공간 복잡도는 알고리즘이 문제를 해결하는 데 필요한 메모리 공간의 크기를 나타내는 지표입니다.
알고리즘의 시간 복잡도가 작으면 더 빠른 실행 시간을 가질 수 있으며, 공간 복잡도가 작으면 더 적은 메모리 공간을 사용할 수 있습니다.