[기술면접준비] 프로그래밍, 전산 기본 질문(+답 정리)

[기술면접준비] 프로그래밍, 전산 기본 질문(+답 정리)

반응형

프로그래밍

전산 기본

객체지향이 무엇인가요? 절차지향과의 차이점은 뭐죠?

개념: 절차지향은 위에서부터 순차적으로 실행되는 반면, 객체지향은 이런 코드들의 목록으로 프로그래밍을 보는 것에서 벗어나 하나하나 독립된 객체들을 만들어주고, 이 객체들이 서로 데이터를 주고 받고 처리하도록 만들어주는 프로그래밍 방식입니다.

차이점: 절차지향은 코드의 수정이 필요할 때 일일이 찾아서 수정해야하지만 객체지향은 수정해야할 부분이 클래스 내부에 멤버 변수나 메서드로 있기 때문에 해당 부분만 수정하면 된다는 차이가 있습니다. 그에 따른 장점으로는 코드 재사용이 유리하고 유지보수가 쉽습니다. 단점으로는 설계시에 많은 시간과 노력이 필요합니다.

추상화란?

객체들간의 공통적인 기능을 간추려내는 것.

클래스란?

추상화를 거쳐 집단에 속하는 속성과 행위를 변수와 메서드로 정의한 것입니다.

인스턴스란?

클래스에서 정의한 것을 토대로 실제 메모리 상에 할당된 것입니다.

캡슐화란?

낮은 결합도를 유지할 수 있도록 설계하는 것입니다. 은닉자를 사용하여 외부에서 접근할 수 없도록 제한을 두는 것입니다.

상속이란?

상위 개념을 하위개념이 물려받는 것으로 부모 클래스의 속성과 기능을 그대로 이어받아서 사용할 수 있게하고 기능의 일부분을 변경해야할 경우 상속받은 자식 클래스에서 해당 기능만 재정의 하여 사용할 수 있게 하는 것입니다.

다형성이란?

상속을 통해 기능을 확장하거나 변형하는 것입니다. 오버로딩은 같은 이름의 함수를 여러 개 정의하고 매개변수에 따라 함수를 접근할 수 있도록 하는 것이고, 오버라이딩은 부모클래스의 메서드와 같은 이름, 매개변수를 재정의 하는 것입니다.

객체지향 SOLID 원칙에 대해서 설명해 주세요.

OOP환경에서 잘 짜여진 코드를 설계하기 위한 가이드를 제시해주는 룰로서 SRP(Single Responsibility Principle) 단일책임원칙, OCP(Open Closed Principle) 개방페쇄원칙, LSP(Liskov Substitution Principle) 리스코프치환원칙, ISP(Interface Segregation Principle) 인터페이스분리원칙, DIP(Dependency Inversion Principle) 의존관계역전 원칙이 있습니다.

객체지향 4가지 특징에 대해서 설명해 주세요.

캡슐화, 추상화, 상속, 다형성이 있습니다.

대표적인 객체지향 언어에는 어떤 것들이 있나요?

자바, 파이썬, 고, js 등이 있습니다.

데이터 타입과 변수의 차이는 무엇인가요?

변수는 값의 위치(주소)를 기억하는 저장소이며, 메모리 상의 주소를 의미합니다. 이 값의 종류에 따라서 확보해야할 메모리의 크기가 달라지게 되는데 이 값의 종류, 즉 데이터의 종류를 데이터 타입이라고 합니다.

함수형 프로그래밍에 대해서 설명해 주세요.

순수 함수로 나누어 문제를 해결하는 기법으로, 대입문이 없는 프로그래밍입니다. 명령형 프로그래밍에서는 메소드를 호출하면 상황에 따라 내부의 값이 바뀔 수도 있는데, 함수형 프로그래밍에서는 대입문이 없기 때문에 한 번 할당된 값은 새로운 값으로 변할 수 없습니다.

AOP란 무엇인가요?

Aspect Oriented Programming의 약자로 관점 지향 프로그래밍입니다. 어떤 로직을 기준으로 핵심적인 관점, 부가적인 관점으로 나누어서 보고 그 관점을 기준으로 각각 모듈화 하는 것입니다.

모듈화란?

어떤 공통된 로직이나 기능을 하나의 단위로 묶는 것 입니다.

컴파일러와 인터프리터의 차이는 무엇인가요?

컴파일러는 소스코드 전체를 훑고 컴퓨터 프로세서가 실행할 수 있도록 바로 기계어로 변환합니다. 반면 인터프리터는 소스코드의 각 행을 연속적으로 분석하며 실행합니다. 그래서 줄 단위의 번역을 하는 인터프리터보다 컴파일러가 시간이 더 오래 걸리지만 한 번 컴파일을 하면 실행 파일이 생성되어 다음에 실행을 할 때 기존에 생성되었던 실행 파일을 실행하기 때문에 인터프리터에 비해 실행 시간은 더 빠른 편입니다. 그리고 컴파일러는 플랫폼(하드웨어)에 종속적이지만, 인터프리터는 모든 플랫폼에 종속되지 않는 특징이 있습니다. .java->javac-> .class(플랫폼종속적) ->자바인터프리터->종속프리

오버로딩과 오버라이딩의 차이는 무엇인가요?

오버로딩은 같은 이름의 메서드를 여러개 가지면서 매개변수에 따라 함수를 접근 가능하게 하는 것이고, 오버라이딩은 상위클래스의 메서드와 같은 이름을 하위 클래스가 재정의해서 사용하는 것입니다.

1급 객체에 대해서 설명해 주세요.

변수나 데이터 구조안에 담을 수 있고, 파라미터로 전달 가능하며, 반환값으로 사용할 수 있고, 할당에 사용된 이름과 무관하게 고유한 구별이 가능한 것입니다.

https://studygroup.moralis.io/t/programming-crypto-meme-fourm/9625

질문출처:

https://velog.io/@hygoogi/%EA%B8%B0%EC%88%A0-%EB%A9%B4%EC%A0%91-%EC%A7%88%EB%AC%B8-%EB%AA%A8%EC%9D%8C

참고 자료:

위키피디아

https://gona.tistory.com/71#comment13528023

반응형

from http://suzyalrahala.tistory.com/62 by ccl(A) rewrite - 2021-12-12 12:01:45