S E P H ' S

[Part1. CS] - 개발상식 본문

CS/기술면접지식

[Part1. CS] - 개발상식

yoseph0310 2021. 9. 1. 20:57

좋은 코드란 무엇인가?

 

정의

컴퓨터 뿐만 아니라 함께 일하는 혹은 정보를 공유하는 개발자 간에 잘 익히도록 짜여진 코드

개발자 간에 소통하기 쉽도록 가독성이 좋아야 하는데, 가독성을 높이는 방법에는 여러가지가 있다.

 

- 주석 & 문서화

- 일관된 들여쓰기

- 뻔한 주석은 달지 않기

- 코드를 그룹으로 묶기

- 일관된 네이밍 규칙

- DRY 원칙 (Don't Repeat Yourself) 같은 코드 반복하지 않기

- 코드가 깊어지는 것을 피하기 (Avoid Deep Nesting)

- 줄길이 제한하기

- 파일과 폴더를 조직화하기

 

객체지향 프로그래밍이란 무엇인가?

정의

객체지향 프로그래밍(Object Oriented Programming)은 문제를 여러 개의 객체 단위로 나눠 작업하는 방식을 말한다.
이 방식은 오늘날 가장 많이 사용하는 대표적인 프로그래밍 방식이고 JAVA, C# 등이 대표적인 객체지향 프로그래밍 언어이다.

 

객체지향 프로그래밍 특징 및 장점은?

객체지향 프로그래밍의 가장 큰 특징은 클래스를 이용해 연관 있는 처리부분(함수)과 데이터 부분(변수)를 하나로 묶어 객체(인스턴스)를 생성해 사용한다는 점이다.

객체지향 프로그래밍에서는 프로젝트를 독립적인 객체 단위로 분리해서 작업할 수 있기 때문에 여러 개발자와 협업해 규모가 큰 프로젝트를 진행할 수 있으며 유지보수측면도 뛰어나다는 장점이 있다.

 

구분 절차지향 프로그래밍 객체지향 프로그래밍
처리방식 문제를 여러 개의 함수로 나누어 순차적으로 호출하여 처리 문제를 여러 개의 객체 단위로 나누어 처리
단점 오래된 방식.
협업으로 진행하는 큰 프로젝트에는 부적합
학습 난이도 높음.
개발자의 활용 능력 중요
장점 간단하고 소규모 프로젝트에 용이
비교적 배우기 쉬움
최근 가장 많이 사용하는 방식
협업이 중요한 대형 프로젝트에 적합

 

RESTFul API 란?

REST 정의

REST : "Representational State Transfer"의 약자
자원을 이름(자원의 표현)으로 구분하여 해당 자원의 상태(정보)를 주고 받는 모든 것을 의미
월드 와이드 웹(www)과 같은 분산 하이퍼미디어 시스템을 위한 소프트웨어 개발 아키텍처의 한 형식

 

REST 구체적 개념

HTTP URI(Uniform Resource Identifier)를 통해 자원(Resource)을 명시하고, HTTP Method(POST, GET, PUT, DELETE)를 통해 CRUD Operation을 적용하는 것을 의미

 

REST API 정의

REST 기반으로 서비스 API를 구현한 것
최근 OpenAPI(누구나 사용할 수 있도록 공개된 API), 마이크로 서비스(하나의 큰 애플리케이션을 여러 개의 작은 애플리케이션으로 쪼개어 변경과 조합이 가능하도록 만든 아키텍처) 등을 제공하는 업체 대부분은 REST API를 제공한다.

 

REST Ful이란

REST Ful은 일반적으로 REST라는 아키텍처를 구현하는 웹 서비스를 나타내기 위해 사용되는 용어

 

REST Ful의 목적

이해하기 쉽고 사용하기 쉬운 RSET API를 만드는 것
REST Ful 한 API를 구현하는 근본적인 목적이 성능 향상에 있는 것이 아니라 일관적인 컨벤션을 통한 API의 이해도 및 호환성을 높이는 것이 주 동기이니, 성능이 중요한 상황에서는 굳이 REST Ful한 API를 구현할 필요는 없다.

 

TDD란 무엇이며 어떠한 장점이 있는가?

정의

테스트 주도 개발 (Test-Driven Development(TDD)) : 테스트가 개발을 이끌어 나간다.

 

TDD의 장단점

장점
1. 결함이 줄어든다.
2. 코드 복잡도가 떨어진다.

단점
1. 개발 시간이 늘어난다.

 

함수형 프로그래밍이란?

정의

함수형 프로그래밍은 거의 모든 것을 순수 함수로 나누어 문제를 해결하는 기법으로, 작은 문제를 해결하기 위한 함수를 작성하여 가독성을 높이고 유지보수를 용이하게 해준다.

 

MVC 패턴이란 무엇인가?

정의

디자인 패턴 중 하나.
프로그램이나 어떤 특정한 것을 개발하는 중에 발생했던 문제점들을 정리해서 상황에 따라 간편하게 적용해서 쓸 수 있는 것을 정리하여 특정한 "규약"을 통해 쉽게 쓸 수 있는 형태로 만든것

 

MVC란

Model, View, Controller 의 약자
하나의 애플리케이션, 프로젝트를 구성할 때 그 구성 요소를 세가지의 역할로 구분한 패턴이다.

 

Git과 GitHub에 대해서

Git 정의

Git은 Distributed version control system이다. 분산 버전 관리 시스템이다.
시간이 지남에 따라 파일의 변경 사항을 추적하는 도구

 

GitHub 정의

Git을 사용하는 프로젝트를 위한 호스팅 서비스

 

References

REST : https://gmlwjd9405.github.io/2018/09/21/rest-and-restful.html
함수형 프로그래밍이란? : https://mangkyu.tistory.com/111
MVC 패턴이란? : https://m.blog.naver.com/jhc9639/220967034588
Git과 GitHub에 대해서 : https://velog.io/@miretta96/Github에-대하여-알아보자
TDD의 정의와 효과 : https://gmlwjd9405.github.io/2018/06/03/agile-tdd.html

 

'CS > 기술면접지식' 카테고리의 다른 글

[Part2. CS] - 자료구조 (2)  (0) 2021.09.15
[Part2. CS] - 자료구조 (1)  (0) 2021.09.08
[Web] IT 기술 면접 질문 정리 (2)  (0) 2021.06.22
[Web] IT 기술 면접 질문 정리 (1)  (0) 2021.06.21