CS기술면접/Java

[Java] Java 기술면접

포포015 2021. 1. 17. 22:31

추상클래스 인터페이스 차이

- 추상클래스는 기능 확장의 목적이 강하고, 인터페이스는 구현의 목적이 강하다.

추상클래스는 상속을통해 자손클래스에서 완성하도록 유도하는것이고,

인터페이스는 다중상속이 가능하고, 상속을받게되면 인터페이스안의 추상메서드들을 모두 구현해야한다.

 

* 그럼 둘이 느낌은 비슷한데 왜 이걸나눠쓰는건가?

- 사용의도 차이점이 있다. 추상클래스는 완성된메서드와, 미완성된 메서드를 가질수 있어, 

미완성된 메서드만 오버라이딩해서 작업하면되는데, 인터페이스같은경우 상속을받으면 안의 추상메서드를 모두

구현해야하는 불편함이 있다.

// 클래스간의 공통된 기능이 필요하다면 추상클래스를 이용해 일반메서드를 작성해 자식클래스에서 사용할수 있도록하면 중복된 코드를 제거할수있음!

 


http get post 차이
- http는 웹상에서 클라이언트와 서버간에 요청/응답으로 데이터를 주고 받을수 있는 포로토콜.
클라이언트가 http 프로토콜을 통해 서버에게 요청을 보내면 서버는 요청에 맞는 응답을 클라이언트에게 전송한다.
http 요청에 포함되는 http 메소드는 서버가 요청을 수행하기 위해 해야할 행동을 표시하는 용도로 사용
(get - 서버로 부터 정보를 조회하기 위해 설계된 메소드. get은 요청을 전송할때 필요한 데이터를 body에 담지않고, 쿼리스트링을 통해 전달한다.
 - 쿼리스트링이란 ? 이름과 값으로 쌍을 이루는 요청 파라미터를 쿼리 스트링이라고 부른다. ( 요청 파라미터가 여러개면 & 로 연결)
(post - 리소스를 변경/생셩 하기위해 get과 달리 전송해야할 데이터를 http 메세지의 body에 담아 전송한다. http 메시지의 body는 길이의 제한없이 데이터를 전송할수 있다. (대용량 데이터 전송가능)
 - post는 데이터가 body로 전송되고 내용이 눈에 보이지않아 get 보다 보안적인면에서 안전하다고 생각할수 있지만 post 요청도 크롬개발자도구 , fiddler 와 같은 툴로 요청 내용을 확인 할수 있기때문에 민감한내용은 암호화해 전송해야함)
 - 또한 post로 요청을 보낼때는 요청헤더의 contnet-type에 요청 데이터의 타입을 표시해야함

list set map 차이

- List는 순서가 있고, 중복을 허용 // set은 순서도없고, 중복도 허용하지않음 // map은 순서없고, 키,값형식

 


싱글톤 패턴이란?
- 애플리케이션이 실행될때 싱글톤의 객체 하나의 주소값만 사용하는 디자인패턴(스프링 컨테이너가 싱글톤패턴)


생성자가 여러 차례 호출되더라도 실제로 생성되는 객체는 하나고 최초 생성 이후에 호출된 생성자는 최초에 생성한 객체를 반환한다. (자바에선 생성자를 private로 선언해서 생성 불가하게 하고 getInstance()로 받아쓰기도 함)
=> 싱글톤 패턴은 단 하나의 인스턴스를 생성해 사용하는 디자인 패턴이다.
(인스턴스가 필요 할 때 똑같은 인스턴스를 만들어 내는 것이 아니라, 동일(기존) 인스턴스를 사용하게함)

 

프레임워크와 라이브러리 차이
- 소프트웨어의 구체적인 부분에 해당하는 설계와 구현을 재사용이 가능하게끔 협업화된 클래스를 제공하는것.

라이브러리와 달리, 애플리케이션의 틀과 구조를 결정하므로 개발자가 그 틀과 규칙을 지키며 개발해야함.

프레임워크가 흐름의 주도권을 갖고 있음.

 

- 라이브러리는 개발자가 필요할때 가져와서 사용하면되기떄문에, 흐름의 주도권은 개발자에게 있다

 

ajax란 무엇인가
- JavaScript를 사용한 비동기 통신, 클라이언트와 서버간에 XML 데이터를 주고받는 기술이다.
즉, 쉽게 말하자면 자바스크립트를 통해서 서버에 데이터를 요청하는 것이다.

서버와 클라이언트란?
서버는 일반적으로 클라이언트에게 네트워크를 통해 서비스를 제공하는 시스템을 말합니다. 여기서 클라이언트는 서비스를 사용하는 사용자를 가리키는 말

에러 와 예외의 차이 
에러는 메모리 부족, 스택오버플로우와 같이 발생하게 되면 복구할 수 없는 심각한 오류이고, 예외는 발생하더라도 수습할 수 있을 정도의 비교적 덜 심각한 오류입니다. 에러는 발생 시 막을 방도가 없지만, 예외는 프로그래머가 예외처리를 통해서 비정상종료를 막을 수 있는 것

try/catch와 throws 차이
throws 키워드를 사용하는 메서드를 호출한 상위 메서드에서 이러한 에러 처리에 대한 책임을 맡게 되는 것
try/catch try에 예외가 발생할만한 코드 블록을 지정하고 , catch 는 예외가 발생했을시 예외처리를 할 블록

오버로딩과 오버라이딩의 차이는?
- 오버로딩은 없던 메서드를 이름만 같은 메서드를 새로 정의하는것이고(메서드의 파라미터가 다르고),

오버라이딩은 상속받은 메서드의 내부로직만 변경해서 사용하는것


getter와 setter를 사용하는이유가 무엇? 
- 멤버변수에 직접 접근하지 못하게 private 으로 접근 지정자를 설정하고 public 으로 게터 세터를 만드는 것을 많이 해왔다. 근데 이럴거면 어차피 아무나 접근가능한데 왜 private 으로 할까 하고 의문을 가질수 있다 ( 게터 세터를 사용하면 메서드를 통해 접근하기때문에, 메서드 안에서 매개변수같이 어떤 올바르지않은 입력에 대해 사전처리할수 잇게 제한하거나 조절 할수 잇기때문)
익셉션 클래스(종류) 구분할줄 아는가?(체크, 언체크)

* setter를 사용하면 객체지향의 캡슐화 위반이다. setter사용을 자제하자. 

 class의 내부 메소드를 만들어서 클래스 객체가 자기 자신을 변경하도록 코드를 작성하자.


MVC 패턴이란 무엇인가
- 디자인 패턴중 하나 (디자인 패턴이란 프로그램이나 어떤 특정한 것을 개발하는 중에 발생했던 문제점들을 정리해서 상황에 따라 간편하게 적용해서 쓸 수 있는 것을 정리하여 특정한 "규약"을 통해 쉽게 쓸 수 있는 형태로 만든 것을 말합니다 -  디자인패턴이라는게 나오는 것이며 이렇듯 "좀 더 쉽고 편리하게" 사용할 수 있게 만든 특정한 방법들을 디자인 패턴이)
mvc는 model,view ,controller의 약자 
model 은 어플리케이션이 "무엇"을 할것인지 를정의 ,내부 비즈니스로직을 처리하기 위한 역할 (처리되는 알고리즘, DB 와 상호작용(CRUD Create Read Update Delete), 데이터 등등..)
controlle 은 모델이 "어떻게"처리할것인지 알려주는 역활 , 요청내용을 분석해 model 과 view 에 업데이트 요청을 하게됨
view는 화면에 "무엇"인가를 보여주기 위한 역할을 한다 (클라이언트에게 무엇을 화면(ui)로 보여줌

RestFul api란?
- 리소스의 이름으로 구분하여 해당 자원의 상태를 주고받는 모든것들을 의미한다.
URI를 통해 자원(Resouce)을 명시하고 HTTP Method(GET, POST, PUT, PATCH, DELETE 등)를 통해
해당 자원에 대한 CRUD를 적용하는 것을 의미한다

 

클래스와 객체의 차이점?

- 클래스는 객체를 만들어내기위한 설계도 혹은 틀 // 연관되어 있는 변수와 메서드들의 집합

- 객체란 소프트웨어 세계에서 구현할 대상          // 클래스에 선언된 모양 그대로 생성된 실체

 

자바의 메모리 영역

- JVM 의 구조는 크게 GC, Exection Engine, Runtime Data Area, Class Loader  4가지로 나눌수 있다.

- 여기서 중요시 해야할건 Runtime Data Area 부분인데, Runtime Data Area 밑엔 
스태틱 , 힙, 스택 , PC 레지스터, 네이티브 메서드 스택 5개가있는데 중요하게 알아야할건.

 

스태틱,힙, 스택

 

스태틱 - JVM위에 자바어플리케이션이 올라가면 클래스와 패키지, static가 올라감

스택 - 메서드들이 올라감

힙 - new를 해서 생성된 객체가 올라감

 

 

01.25 

 

java의 final 키워드 (final/finally/finalize)

 

Static의 키워드 의미

Stack, Queue 구조

String과 StringBuffer의 차이

다형성이란?

스레드란 ? ( 장단점)

지역변수와 인스턴스변수가 의미하는것?

C와 JAVA의 차이점