본문 바로가기

프로그래밍

신입개발자 기술면접 질문 최종정리(Java)

728x90
반응형

oop가 무엇인가요?
oop는 객체지향프로그래밍입니다.
객체지향 언어에는 대표적으로 Java가 있습니다.
객체지향의 장점으로는 상속,추상화,다형성 등을 통해 코드의 재사용성을 높일 수 있고 캡슐화를 통해 보안처리가 가능합니다. 그로인해 유지보수가 편하고 안정성이 좋고 확장이 용이합니다.
하지만 많은 클래스로 인한 메모리 낭비가 높은 편입니다.

java특징이 뭔가요?
java는 객체 지향 프로그래밍 언어입니다.
JVM 위에서 실행되기 때문에, 플랫폼에 의존하지 않고 실행이 가능합니다

java랑 c언어 차이는 뭔가요?
java는 객체지향언어이고 c는 절차지향언어입니다.

객체가 뭔가요?
객체는 현실 세계를 모델링한 개념이고 객체 내에는 명사형의 상태와 동사형의 메서드가 존재합니다.

인터페이스가 뭔가요?

추상클래스와 인터페이스 차이점이 뭔가요?

오버로딩과 오버라이딩 차이점이 뭔가요?
오버로딩은 같은이름의 메서드를 여러개 가지면서 매개변수의 유형과 갯수를 다르도록 하는 기술입니다.
오버라이딩은 상위클래스가 가지고 있는 메서드를 하위클래스에서 재정의 해서 사용하는 것입니다. 이때 메서드이름과 리턴타입과 아규먼트는 같아야합니다.

생성자가 뭔가요?
생성자는 클래스와 같은 이름의 메서드로 객체가 새로 생성될때 호출되는 메서드 입니다. 생성자를 만들지 않아도 기본으로 만들어집니다. 생성자는 파라미터를 다르게 하여 오버로딩할 수 있으며 이때는 기본생성자를 명시적으로 만들어주어야합니다.

지역변수랑 인스턴스변수의 차이점이 뭔가요?
지역변수는 메서드안에서 정의되는 변수입니다. 인스턴스변수는 클리스에서 정의되는 변수입니다.

Public 접근 제어자와 private 접근 제어자의 차이가 뭔가요?
public멤버는 다른패키지의 다른클래스까지 보입니다.
그리고 private멤버는 같은 클래스에서만 보입니다.

JDBC란 무엇인가요
자바에서 DB프로그래밍을 하기위해 사용되는 API입니다.

스레드 멀티스레드에대해 설명해주세요.
일반적으로 하나의 프로세스에서는 하나의 스레드를 가지고 작업을 수행합니다. 멀티스레드는 하나의 프로세스 내에서 둘이상의 스레드가 동시에 작업을 수행하는것을 의미합니다.

mybatis에대해 설명해보세요.
mybatis는 자바 오브젝트와 sql사이의 자동매핑기능을 지원해줍니다. 또한 sql을 별도의 파일로 분리해서 관리할수 있게해줍니다.

RESTful API 가 뭔가요?
자원을 이름으로 구분하여 해당 자원의 상태를 주고 받는 것을 의미합니다. HTTP URI를 통해 자원을 명시하고, HTTP Method(POST, GET, PUT, DELETE)를 사용해서 CRUD를 적용하는 것입니다.

spring framework의 Spring Security가 뭔가요?
스프링 시큐리티란 인증, 인가를 담당하는 프레임워크. session을 직접 확인한 후 인증, 인가를 처리하는 경우도 있지만 스프링 시큐리티에서는 해당 작업을 편리하게 할 수 있도록 지원을 해줍니다.

세션이랑 쿠키가 뭔가요?
세션은 로그인과 같은 보안상 중요한 작업을 할때 사용합니다. 쿠키는 아이디저장, 장바구니와같은 기능을 구현할때 사용합니다. 세션도 결국 쿠키를 사용하기 때문에 동작원리는 비슷하지만 저장위치가 다릅니다. 쿠키는 로컬pc에 저장이 되고 세션은 웹서버에 저장이 됩니다.

WAS( Web Application Server )랑 웹서버 차이가 뭔가요?
was는 DB조회나 어떤 로직을 처리해야하는 동적인 컨텐츠를 제공하는 서버입니다. 대표적으로 톰캣이 있습니다. 그리고 웹서버는 html,css,js같은 정적인 컨텐츠를 제공하는 서버입니다. 대표적으로 아파치와 엔진엑스가 있습니다.

ajax어떨때 사용하나요?
ajax는 자바스크립트를 통해서 서버에 데이터를 비동기 방식으로 요청할때 사용합니다.

콜백함수가 뭔가요?
어떤 이벤트가 발생한 후, 수행될 함수를 의미합니다.
success 함수, error 함수, complete 함수 등이 있습니다.

request 호출 방법에는 뭐가있나요?
get 방식은 URL에 Parameter를 붙여서 데이터를 전송합니다. post 방식은 GET 방식과는 달리 body영역에 데이터를 실어 내는 방식입니다.

mvc패턴이 뭔가요?
어플리케이션을 세 개의 영역으로 분할하고 각 구성 요소에게 역할을 부여하는 개발 방식입니다. MVC 패턴을 도입하면 비즈니스 로직영역과 UI 영역이 분리되므로 서로 영향을 주지 않고 유지보수가 가능합니다.
모델영역은 정보들의 가공을 책임지는 컴포넌트를 말합니다.
뷰 영역은 유저 인터페이스를 의미합니다.
컨트롤러영역은 모델과 뷰사이를 이어주는 브릿지 역할을 의미합니다.

DI,IOC가 뭔가요
DI
객체를 직접 생성하는 게 아니라 외부에서 생성한 후 주입 시켜주는 방식이다.

TDD가 뭔가요?
TDD는 테스트주도개발입니다.
작은 단위의 테스트코드를 작성하여 이 테스트가 실패했다면 최소한으로 코드를 수정을 하는 개발방법입니다.

jpa장점을 설명해보세요.
데이터베이스와 독립적인 관계를 가지기 때문에 비즈니스로직에 좀더 집중할 수 있다는 장점을 가지고 있습니다. 또한 객체지향적 설계를 좀더 효율적으로 설계할 수 있습니다.

git과 github를 설명해보세요.
git이란 파일변경사항을 추적할수 있고 다른 사람들과 조율을 하며 협업을 할 수 있는 버전관리 시스템입니다
github는 깃을 지원하는 웹호스팅서비스시스템입니다(호스팅 -서버를 빌려쓰는것)

자바 컬렉션에는 뭐가있나요?
list map set stack queue 등과 같은 것들이 있습니다
이 추상화된 컬렉션 인터페이스 아래 특정한 기법으로 구현된 자료구조가 들어갑니다
예를 들어 리스트라는 인터페이스에는 구현방법에 따라 LinkedList가 들어갈수도 있고 ArrayList가 들어갈수도 있습니다

List에 대해 설명해주세요.
List는 배열과 비슷한 자바의 자료형으로 배열보다 편리한 기능을 많이 가지고 있습니다. List에는 대표적으로 ArrayList와 LinkedList가 있습니다. ArrayList는 배열로 구성된 리스트입니다. 배열과 같은 자료구조이기때문에 리스트의 연산 수행시간 속도는 배열과 같습니다. LinkedList는 다음 노드의 주소를 기억하고 있는 List로 배열에 비해 삽입과 삭제가 간단하다는 장점이 있습니다. 하지만 탐색의 경우에는 첫번째 노드부터 탐색해 나가야 하기 때문에 느리다는 단점이 있습니다.

Map에 대해 설명해주세요.
Map에는 HashMap, TreeMap, LinkedHashMap이 있습니다.
그중 HashMap은 가장 일반적으로 사용하는 Map입니다. HashTable을 사용하며 Key값에 해시함수를 적용하여 나온 index에 Value를 저장하는 식입니다. 중복을 허용하지 않으며 순서가 없다는 것이 특징이라고 할수 있습니다.
TreeMap은 Red-Black Tree 자료구조를 이용한 Map이고 Tree구조이기 때문에 어느정도 순서를 보장합니다.
LinkedHashMap은 LinkedList로 구현된 HashMap입니다. List로 구현되어있기 때문에 순서가 보장됩니다. 하지만 LinkedList 특성상 랜덤접근은 느릴 수 있습니다.

Set에 대해 설명해주세요.
Set에는 HashSet, TreeSet, LinkedHashSet이 있습니다.
HashSet은 HashMap에서 Key값이 없는 자료형이고 집합이라고 생각해도 무방합니다. 값이 포함되어 있는지 아닌지에만 관심이있고 순서를 보장하지 않으며 중복값을 허용하지 않습니다. set중에는 가장 많이 사용됩니다.
TreeSet은 Red-Black Tree 자료구조를 이용한 set입니다.
LinkedHashSet은 LinkedList로 구현된 HashSet으로 순서를 보장합니다

Stack과 Queue에 대해 설명해주세요.
Stack과 Queue 모두 데이터를 기록하는 자료구조이며 Stack은 마지막에 넣은 요소가 먼저나오는 특징이 있는데에 반해 Queue는 Stack과 반대 개념으로 먼저들어간 데이터가 먼저 나오는 구조입니다.

Array와 ArrayList의 다른점
Array는 길이에 대해서 length변수를 쓰고 ArrayList는 size()메서드를 사용합니다. Array는 크기가 고정되어있지만 ArrayList는 사이즈가 동적인 배열입니다. Array는 int, byte, char 등과 같은 primitive Type(기본형타입)과 Object모두 담을 수 있지만, ArrayList는 Object만 담을 수 있습니다.

http https차이점을 설명해보세요.
http는 암호화가 추가되지 않았기 때문에 보안에 취약한 반면 https는 안전하게 데이터를 주고받을 수 있습니다.
하지만 https를 이용하면 암호화,복호화의 과정이 필요하기 때문에 http보다 속도가 느립니다.

Call by value와 Call by reference차이
함수의 호출 방식으로 Call by value는 값의 의한 호출이고
함수 안에서 인자의 값이 변경되어도, 외부의 변수의 값은 변경되지 않는다.
Call by reference는 참조에 의한 호출입니다. 함수 안에서 인자의 값이 변경되면, 아규먼트로 전달된 객체의 값도 함께 변경된다.

OAuth 의 흐름에 대해 설명해주세요.
웹서핑을 하다보면 구글이나 페이스북같은 소셜계정으로 간편이 회원가입과 로그인을 할 수 있는데 이때 사용하는 프로토콜이 오어스입니다.

Connection Pool을 쓰는 이유는?
서버의 부하를 줄여주기 위해 사용합니다.
한번에 여러 사람들이 DB커넥션을 요구한다면 최악의 경우 서버가 죽어버리는 문제가 발생할수도 있습니다.

XSS 를 막기 위해서는 어떤 방법이 있는지?
xss란 웹사이트 관리자가 아닌 사람이 웹페이지에 악성스크립트를 삽입할수 있는 취약점입니다. 제가 했던 방법은 jstl의 c:out태그를 사용했었습니다.

728x90
반응형