대충벌레 블로그
article thumbnail
반응형

* 이 글은 포포의 개발공부방 블로그의 허락을 받고 올리는 글입니다.

 

추상 클래스와 인터페이스의 차이는 무엇인가?

클래스는 크게 일반 클래스와 추상 클래스로 나뉘게 됩니다.

추상클래스는 클래스 안에 "추상 메소드"가 하나 이상 포함 되거나

abstract으로 정의된 경우를 말하며(멤버변수와 메소드 가질수 있음)

인터페이스는 모든 메서드가 추상 메서드인 경우입니다. (자바8버전 이후부터는 default 키워드를 이용해 일반 메소드의 구현도 가능합니다 )

추상 클래스는 그 추상 클래스를 상속 받아서 기능을 이용하며 확장시킬수 있고,

인터페이스는 함수의 껍데기만 있으며 , 그 함수의 구현을 강제하기 위해서 사용됩니다.

 

[HTTP]  GET POST 차이는 무엇인가?

http는 웹상에서 클라이언트와 서버간에 요청과 응답으로 데이터를 주고 받을수 있는 프로토콜 입니다.클라이언트가 http 프로토콜을 통해 서버에게 요청을 보내면 서버는 요청에 맞는 응답을 클라이언트에게 전송을 하게 됩니다.

http 요청에 포함되는 http 메소드는 서버가 요청을 수행하기 위해 해야할 행동을 표시하는 용도로 사용됩니다.

[GET] : 서버로부터 정보를 조회하기 위해 설계된 메소드get은 요청을 전송할때 필요한 데이터를 body에 담지 않으며, 쿼리스트링을 통해 전달합니다.

[쿼리스트링] : 이름과 값으로 쌍을 이루는 요청 파라미터를 쿼리스트링 이라고 합니다 파라미터가 여러개일시 &로 연결합니다.[POST]: 리소스를 변경과 생성 하기위해서 get과 달리 전송해야할 데이터를 http 메세지의 body에 담아 전송합니다.

http 메시지의 body는 길이의 제한없이 데이터를 전송할수 있습니다 (대용량 데이터 전송가능)

post는 데이터가 body로 전송되고 내용이 눈에 보이지 않기 때문에 get방식보다는 보안적인 면에서 안전하다고 생각할수 있지만POST 요청도 크롬 개발자 도구, fiddler 와 같은 툴로 요청 내용을 확인할수 있기때문에 민감한 내용은 암호화를 통해 전송해야 합니다. 또한 post 방식으로 요청을 보낼시 요청헤더의 content-type에 요청 데이터의 타입을 표시해야 합니다.

 

LIST MAP 차이는 무엇인가?

LIST와 MAP의 공통점은 데이터를 저장하는 자료구조입니다. 둘다 데이터를 저장하는건 같지만 저장하는 구조의 차이가 있습니다.

 

List는 메모리 안에 특정한 동일공간에 뭉텅이로 저장이 되며 , 내부구현은 배열로 되어 있기 때문에 알맞은 데이터 저장공간만 있다면 데이터 저장속도가 빠르고 순차적으로 데이터를 저장하므로 포지션별로 의미가 있을때 사용하는게 좋습니다.

 

Map은 List와 다르게 뭉텅이로 저장하는것이 아닌, Map에 아이템을 저장할때마다 빈공간을 찾아서 저장합니다list보다는 데이터 저장속도가 느릴수 있으며 가장큰 특징은 Key와 value로 쌍을 이루게 됩니다.따라서 단순한 인덱션보다는 저장하고 싶은 데이터가 <K,V>로 값을 이룰때 Map을 사용하는게 좋습니다.

 

 

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

 참고하면 좋은 링크입니다. https://jeong-pro.tistory.com/95

 

객체지향 프로그래밍이란 컴퓨터 프로그래밍 방식중 하나로, 프로그래밍에서 필요한 데이터를 추상화 시켜서 

상태와 행위[변수와 메소드]를 가진 객체를 만들고 그 객체들간의 유기적인 상호작용을 통해 로직을 구성하는 프로그래밍 방법 입니다.

 

객체지향 프로그래밍(OOP)의 장점과 단점은 무엇인가?

👉 장점은 코드 재사용이 용이합니다 

남이 만든 클래스를 가져와서 이용할수 있고, 상속을 통해 확장해서 사용할수 있습니다

👉 유지보수가 쉽습니다.

절차 지향프로그래밍은 코드를 수정해야 할때 일일이 찾아 수정해야 하는 반면에 , 객체지향 프로그래밍에서는 수정해야할 부분이 클래스 내부에 멤버변수 혹은 메서드로 있기 때문에 해당 부분만 수정하면 됩니다.

👉 대형 프로젝트에 적합합니다

클래스단위로 모듈화 시켜서 개발할수 있으므로 대형 프로젝트처럼 여러명, 여러회사에서 개발 필요시 업무 분담이 쉽습니다


👉 단점은 처리속도가 상대적으로 느립니다.

👉 객체가 많으면 용량이 커질수 있습니다.

👉 설계시 많은 시간과 노력이 필요합니다.

 

 

싱글톤 패턴이란 무엇인가?

애플리케이션이 시작될 때 어떤 클래스가 최초 한번만 메모리를 할당하고(Static) 그 메모리에 인스턴스를 만들어서 사용하는 디자인 패턴입니다.

생성자가 여러차례 호출되더라도 실체로 생성되는 객체는 하나이고 최초 생성 이후에 호출된 생성자는 최초에 생성한 객체를 반환 합니다. [ Java에서는 생성자를 private 으로 선언해서 생성이 불가능하게 하고 getInstance()로 받아서 사용하기도 합니다. ] 

즉 싱글톤 패턴이란 단 하나의 인스턴스를 생성해 사용하는 디자인 패턴입니다.

[인스턴스가 필요할때 똑같은 인스턴스를 만들어 내는것이 아닌 기존의 인스턴스를 사용하게 합니다 ]

 

프레임워크와 라이브러리 차이는 무엇인가?

프레임워크는 뼈대나 기반구조를 뜻하고 제어의 역전 개념이 적용된 대표적인 기술입니다.

소프트웨어에서의 프레임워크는 '소프트웨어의 특정 문제를 해결하기 위해서 상호 협력하는 클래스와 인터페이스의 집합' 이라 할수 있으며, 완성된 어플리케이션이 아닌 프로그래머가 완성시키는 작업을 해야 합니다.

객체 지향 개발을 하게 되면서 통합성,일관성의 부족이 발생되는 문제를 해결할 방법중 하나라고 할수 있습니다.

 

라이브러리는 단순 활용가능한 도구들의 집합을 말합니다. 

즉 개발자가 만든 클래스에서 호출하여 사용,클래스들의 나열로 필요한 클래스를 불러서 사용하는 방식을 취하고 있습니다.

 

라이브러리와 프레임워크의 차이는 제어 흐름에 대한 주도성이 누구에게 있는가에 있습니다.

즉 어플리케이션의 Flow(흐름)을 누가 쥐고 있느냐에 달려 있습니다.

프레임워크는 전체적인 흐름을 스스로가 쥐고 있으며 사용자는 그 안에서 필요한 코드를 짜 넣는반면

라이브러리는 사용자가 전체적인 흐름을 만들며 라이브러리를 가져다 쓰는것이라고 할수 있습니다.

다시말해서, 라이브러리는 라이브러리를 가져와서 사용하고 호출하는 측에 전적으로 주도성이 있으며

프레임워크는 틀 안에 이미 제어 흐름에 대한 주도성이 내재(내포)되어 있습니다.

프레임워크는 가져와서 사용하는 느낌이 아니라 틀에 맞춰서 사용한다는 느낌/관점으로 접근하면 됩니다.

 

AJAX란 무엇인가?

JavaScript를 사용한 비동기 통신, 클라이언트와 서버간에 XML 데이터를 주고받는 기술입니다.

즉 자바스크립트를 통해서 서버에 데이터를 요청하는 방식 입니다.

 

서버와 클라이언트란?

서버는 일반적으로 클라이언트에게 네트워크를 통해 서비스를 제공하는 시스템을 말합니다.

여기서 클라이언트는 서비스를 사용하는 사용자를 가리킵니다.

 

에러와 예외의 차이는 무엇인가?

에러[ERROR] : 메모리 부족, 스택오버플로우와 같이 발생하게 되면 복구할 수 없는 심각한 오류

예외[Exception} : 발생하더라도 수습할수 있을 정도의 비교적 덜 심각한 오류

에러는 발생시 막을 방도가 없지만, 예외는 프로그래머가 예외처리를 통해서 비정상적 종료를 막을수 있습니다.

 

try~catch 와 throws 차이는 무엇인가?

throws 키워드를 사용하는 메소드를 호출한 상위 메서드에서 이러한 에러 처리에 대한 책임을 맡게 되는것

try에 예외가 발생할만한 코드 블록을 지정하고

catch에서는 예외가 발생시 예외처리를 할 블록을 지정합니다.

 

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

오버라이딩[Overriding]: 부모클래스의 메소드와 같은이름,매개변수를 재정의 하는것(매개변수 타입과 개수가 같아야함)

오버로딩[Overloading]: 매개변수의 타입과 개수를 다르게 하여 매개변수에 따라 다르게 호출할수 있게 하는것.

 

Getter 와 Setter를 사용하는 이유가 무엇인가?

getter와 setter를 사용하면 메소드를 통해 접근하기 때문에 , 메소드 안에서 매개변수 같이 올바르지 않은 입력값에 대해 사전처리할수 있게 제한하거나 조절 할수 있습니다.

 

MVC 패턴이란 무엇인가?

MVCModel , View , Controller 의 약자입니다.

Model은 어플리케이션이 무엇을 할것인지를 정의하고 , 내부 비즈니스 로직을 처리하기 위한 역할을 합니다.

( 처리되는 알고리즘 , DB와 상호작용 (CRUD), 데이터 등등..)

View는 화면에 무엇인가를 보여주기 위한 역할을 합니다 ( 클라이언트에게 무엇을 화면으로 보여줍니다 )

Controller는 모델이 어떻게 처리할것인지를 알려주는 역할을 하고 , 요청내용을 분석해서 Model과 View에 업데이트 요청을 하게 됩니다.

 

RestFul API 란 무엇인가?

자원을 이름으로 구분하여 해당 자원의 상태를 주고 받는 모든것을 의미합니다.

URI를 통해 자원(Resource)을 명시하고 HTTP Method[GET,POST,PUT,PATCH,DELETE...]를 통해 해당 자원에 대한 CRUD를 적용하는 것을 의미합니다.

반응형

'일상[Daliy] > 면접 준비하기' 카테고리의 다른 글

개발자 인터뷰시 면접 질문  (1) 2021.03.11
profile

대충벌레 블로그

@대충벌레

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!