본문 바로가기

⚡️CS자문자답!⚡️

[1주에 1번 자문자답] About.. 객체지향, HTTP, 선택&삽입 정렬

✋🏻 객체 지향 프로그래밍이 뭔가요?

객체 지향 프로그래밍이란 컴퓨터 프로그래밍 패러다임 중 하나입니다. 프로그램에서 필요한 데이터를 추상화시키고 상태 와 행위 를 가진 객체를 만들고 객체 간 상호작용을 통해 프로그램을 구성하는 방법입니다.

✋🏻 객체 지향 프로그래밍의 특징을 아는대로 말씀해주세요.

추상화, 캡슐화, 상속, 다형성이 있습니다. 추상화는 불필요한 정보는 빼고 공통적인 속성을 하나의 개념으로 다루는 것입니다.

캡슐화는 외부에서 객체의 특정 속성이나 메서드를 접근하지 못하게 합니다. 이를 통해 객체 내부가 변경되도 외부의 다른 객체에 영향을 주지 않을 수 있습니다.

상속 은 부모 클래스의 속성과 기능을 이어 받아 코드를 재사용하고 기능을 수정하거나 확장할 때 상속 받은 클래스만 수정해서 사용할 수 있습니다.

다형성 은 같은 메시지로 요청을 받았을 때 서로 다른 방식으로 처리하는 것을 뜻합니다.

✋🏻 객체 지향 5대 설계 원칙인 SOLID 설명해주세요.

  • SRP

    단일 책임 원칙은 모든 클래스는 하나의 책임만을 가진다는 뜻입니다. 이는 변경 발생 시 다른 객체에 영향을 주지 않기 때문에 유지보수성을 높힐 수 있습니다. 또한 응집도는 높고 결합도는 낮은 프로그램을 만들 수 있습니다.
  • OCP

    개방 폐쇄 원칙은 확장에는 열려있고 수정에는 닫혀있다는 뜻으로 요구사항 변경 시 기존의 코드를 변경하지 않고 기능을 추가할 수 있는 설계입니다.
  • LSP

    리스코프 치환 법칙은 자식클래스가 부모 클래스를 대체할 수 있다는 뜻입니다. 자식클래스는 부모 클래스의 책임(기능)을 변경하지 않고 오직 확장만을 수행해야 합니다.
  • ISP

    인터페이스 분리 원칙은 하나의 클래스가 자신이 사용하지 않는 인터페이스를 구현하지 않는 것을 말합니다. 다시 말해서, 자신이 사용하지 않는 기능에 영향을 받지 않도록 하는 것입니다.
  • DIP

    의존 역전 원칙은 변화가 많은 것보단 없거나 적은 것에 의존해야 한다는 원칙입니다. 변화하기 쉬운 것은 구체화 된 클래스이며 변화하기 어려운 것은 인터페이스나 추상 클래스이므로 의존 관계를 맺을 때 클래스보다 인터페이스나 추상클래스와 관계를 맺어야 합니다.

✋🏻 HTTP 프로토콜은 무엇인가요?

HTTP 프로토콜은 Hyper Text Transfer Protocl의 줄임말이며 TCP/IP를 이용하는 응용프로토콜 입니다. HTTP 프로토콜의 특징은 비연결성으로 서버와 클라이언트 간 연결 상태를 유지하지 않고 무상태성이기 때문에 이전 통신에 대한 정보나 상태가 남아있지 않습니다.

✋🏻 HTTP 메서드는 무엇이고 GET 과 POST의 차이는 무엇인가요?

HTTP 메서드는 서버에 요청을 보내는 방법을 뜻합니다. GET과 POST 모두 서버에 요청할 때 HTTP 프로토콜을 사용합니다.

GET은 클라이언트가 URL과 쿼리 스트링으로 서버의 리소스를 조회하기 위해 사용되는 메서드이고

POST는 클라이언트가 서버에 리소스 생성, 수정을 하기 위해 데이터를 보낼 때 사용합니다. POST는 GET과 달리 HTTP body 부분에 데이터를 담아서 요청합니다.

body에 데이터를 보내면 GET처럼 URL에 데이터를 노출시키지 않을 수 있습니다. 하지만 body에 데이터도 암호화하지 않으면 데이터를 볼 수 있습니다.

✋🏻 선택정렬과 삽입정렬의 차이를 말해보세요.

삽입 정렬은 현재 원소가 삽입될 위치를 찾아서 정렬해나가는 알고리즘이며 선택 정렬은 먼저 각 반복에서 원소를 넣을 위치를 결정하고 정렬해나가는 알고리즘 입니다.