본문 바로가기

프로그래밍

신입개발자 기술면접 질문 정리(JAVA 관련)

728x90
반응형

여기저기 면접을 다니면서 나온 질문들을 정리해보았다.

1.자바 특징
-객체 지향 프로그래밍 언어
- JVM 위에서 실행되기 때문에, 플랫폼에 의존하지 않고 실행이 가능

2.객체지향언어의 장점과 특징 (많이나옴)
1) 코드의 재사용성이 높다.
2) 객체 단위로 코드를 작성하므로 유지보수에 용이하다.
-상속 : 상속이란 어떤 클래스가 다른 클래스를 연장하여 다시 쓰는 것
-캡슐화 : 내부의 코드를 캡슐처럼 보호하기 위하여 사용. 즉 캡슐화를 위하여, 모든 인스턴스 변수를 private으로 명시하고, setter와 getter 메소드를 만들어 접근하게 합니다. 캡슐 안의 데이터에 직접적으로 접근하는 것은 불가능하며, 오로지 메소드로만 접근할 수 있습니다.
-다형성 : 하나의 객체를 여러가지 타입으로 해석할 수 있는 기술입니다. 다형성 구현을 위하여 메소드의 이름은 같게 하되, 리턴 형이나 혹은 파라미터의 개수나 타입을 다르게 하여 재정의할 수 있습니다.
-추상 :
객체를 생성할 수 없는 클래스로, 오로지 부모클래스로써의 역할만 하는 클래스.클래스 앞에 abstract 키워드를 붙여서 생성
-인터페이스 :
인터페이스란 메소드 선언만 하고 구현은 되어있지 않은 템플릿. 인터페이스는 다음의 조건들을 만족해야 함. 1) 인터페이스를 구현하는 클래스는 인터페이스에 선언된 모든 메소드를 포함하고 있어야 한다.2) 모든 변수는 상수(public static final constant) 여야 한다.3) 모든 메서드는 추상메서드(public abstract)로 선언한다.4) 인터페이스 자료형 타입으로 참조변수 선언가능.

2.선호하는 자바 통합개발환경(IDE)는?
-이클립스, 넷빈즈, 인텔리제이

3.자바클래스란?
-자바에서 모든 코드는 클래스 안에서 정의되며, 그 안에 변수와 메소드를 가진다.

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

5.생성자란?
-생성자는 클래스와 같은 이름의 메소드로, 새 객체가 생성될 때 호출되는 메소드입니다. 생성자를 만들지 않아도 default로 만들어진다. 생성자는 파라메터를 다르게 하여 오버로드 할 수 있으며, 파라메터 생성자를 만든다면 파라메터가 없는 default형 생성자도 명시적으로 만들어주어야 합니다.

6.지역변수랑 인스턴스변수 차이
-지역변수는 메소드 안에서 정의
-인스턴스 변수는 클래스에서 정의

7.Overloading과 Overriding의 차이
- Overloading : 같은 이름의 메서드 여러개를 가지면서 매개변수의 유형과 개수가 다르도록 하는 기술

- Overriding : 상위 클래스가 가지고 있는 메서드를 하위 클래스가 재정의해서 사용
- 메소드 이름이 일치할 것
- 아규먼트가 같을 것
- 리턴 타입도 같을 것

8.Public 접근 제어자와 private 접근 제어자의 차이
-Public 멤버는 같은 패키지 안의 클래스뿐 아니라, 다른 패키지 안의 클래스에서도 보인다.
-Private 멤버는 오로지 그 클래스에서만 보입니다. 같은 패키지 안의 다른 클래스라 할지라도 보이지 않음.

9. Array와 List의 차이

Array List
선언시 배열 크기 지정이 필요하다. 사이즈 지정을 하지 않아도 동적으로 변화한다.
객체를 넣을 때 인덱스 번호를 정의해야 한다. 그냥 넣어도 된다.
다차원 저장이 가능하다 다차원 저장이 불가능하다
접근이 빠르다 (인덱스 번호를 이용해 Random access를 하기 때문) 추가, 삭제가 빠르다 (포인터로 Sequential access를 하기 때문)

10. JDBC란?
-자바에서 DB프로그래밍을 하기위해 사용되는 API

11. 스레드 멀티스레드 (많이나옴)
-일반적으로 하나의 프로세스는 하나의 스레드를 가지고 작업을 수행.
-멀티 스레드(multi thread)란 하나의 프로세스 내에서 둘 이상의 스레드가 동시에 작업을 수행하는 것을 의미합니다.

12. mybatis란?
-자바 오브젝트와 SQL사이의 자동 매핑 기능을 지원하는 ORM(Object relational Mapping)프레임워크
-SQL을 별도의 파일로 분리해서 관리하게 해준다.

13.RESTful API 란? (많이나옴)
-자원을 이름(자원의 표현)으로 구분하여 해당 자원의 상태(정보)를 주고 받는 모든 것

-HTTP URI를 통해 자원을 명시하고, HTTP Method(POST, GET, PUT, DELETE)를 사용해서 CRUD를 적용하는 것.

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

15.세션이랑 쿠키가 뭔지 (많이나옴)
-쿠키 : 로그인시 아이디 저장, 쇼핑몰 장바구니, 팝업창 오늘 더이상 보지않음,
-세션 : 로그인 같이 보안상 중요한 작업을 수행할 때 사용
-쿠키와 세션은 비슷한 역할을 하며, 동작원리도 비슷하다. 그 이유는 세션도 결국 쿠키를 사용하기 때문

-쿠키는 클라이언트 로컬pc에 저장 세션은 웹서버에 저장된다.

16.WAS( Web Application Server )랑 웹서버 차이
-웹 서버정적인 컨텐츠( html, css, js )를 제공하는 서버입니다. ex) Apache, Nginx
-WAS는 DB 조회나, 어떤 로직을 처리해야 하는 동적인 컨텐츠를 제공하는 서버입니다. ex) Tomcat

17.ajax어떨때 사용하는지
-비동기처리시 사용
-자바스크립트를 통해서 서버에 데이터를 비동기 방식으로 요청하는 것

18.콜백함수가 뭔지 (많이나옴)
-어떤 이벤트가 발생한 후, 수행될 함수를 의미한다.
-이벤트가 발생하였을 경우에 이러한 사실을 함수를 통해 전달하게 되는데, 이를 콜백 함수라고 합니다.
success: function () { // 콜백 함수 }, error: function () { // 콜백 함수 }, complete: function () { // 콜백 함수 }

19.어노테이션 종류
https://junu0516.tistory.com/95

1. DI 컨테이너 관련
@Configuration, @Bean , @Component, @AutoWired
2. Spring MVC 관련
@Controller,@RestController,@RequestMapping,@RequestMapping,@RequestParam,@ModelAttribute,@Service,@Repository

20. request 호출 방법
get - URL에 Parameter를 붙여서 전송한다는 것입니다.
post -GET 방식과는 달리 body영역에 데이터를 실어 보낸다는 점

21.mvc패턴
어플리케이션을 세 개의 영역으로 분할하고 각 구성 요소에게 고유한 역할을 부여하는 개발 방식입니다. MVC 패턴을 도입하면 도메인(비즈니스 로직) 영역과 UI 영역이 분리되므로 서로 영향을 주지 않고 유지보수가 가능합니다.

모델(model)
DATA, 정보들의 가공을 책임지는 컴포넌트를 말합니다.
뷰(view)
사용자에게 보여지는 부분, 즉 유저 인터페이스(User interface)를 의미합니다.
컨트롤러(Controller)
모델(Model)과 뷰(View) 사이를 이어주는 브릿지(Bridge) 역할을 의미합니다.


22.DI,IOC
DI

객체를 직접 생성하는 게 아니라 외부에서 생성한 후 주입 시켜주는 방식이다.
DI(의존성 주입)를 통해서 모듈 간의 결합도가 낮아지고 유연성이 높아진다.
IOC

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

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

25.java8사용해봤는지
람다 스트림 캘린더

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

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

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

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

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

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

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


29.http https차이점

30.

728x90
반응형