신입 개발자로서 면접을 보러 갈 시 많이 받았던 질문들 정리해보았습니다.
아래의 문제들만 차분히 외우고가도 웬만하면 대답이 가능할 것이라고 생각됩니다.
개인 프로젝트가 있다면 프로젝트에 대한 설명은 충분히 가능해야 합니다.
그리고 모르면 모른다고 하는 게 제 개인적인 경험으로는 나은 것 같습니다.
1. OOP 란?
- 객체지향프로그램 (Object - oriented Programming)
- 데이터를 객체로 취급하여 프로그램에 반영
- 순차적으로 프로그램이 동작하는 기준과 다르게 객체의 상호작용을 통해 프로그램 작동
- 캡슐화, 다형성, 상속
2. 객체 란?
- Object(객체)는 OOP에서 데이터(변수)와 그 데이터에 관련되는 동작(함수). 즉 절차, 방법, 기능을 모두 포함한 개념
- 클래스는 객체를 만들기 위한 설계도, 객체를 감싸는 큰 틀
3. 추상화, 캡슐화, 상속성, 다형성에 대해 설명
- 상속성 : 부모클래스 상속가능
- 추상화 : Abstract,인터페이스 - 아직 두 개의 큰 차이점, 필요성을 못 느껴봄..
- 캡슐화 : 비슷한 속성, 메서드 하나의 클래스로 만든다. private, public, default, protected
- 다형성 : 오버로딩(같은 함수명, 다른 인자), 오버라이딩 (상속받은 함수를 자식클래스에서 다시 정의)
4. 추상클래스와 인터페이스의 차이점은?
- 추상클래스 : 한 개 이상의 추상메서드를 가지는 클래스
- 추상메서드 : 구현은 하지않고 선언만 한 메서드, 상속받은 자식에서 재정의해서 사용
추상메서드를 재정의 하지 않을 경우 컴파일러는 에러를 발생
- 인터페이스 : 추상클래스와 비슷한 기능을 가지나, 추상메서드와 상수로만 이루어짐(로직 설계 불가능)
다중 상속 가능
- 공통점 : 추상 클래스, 인터페이스 자체로 객체로 생성 불가능.
상속받은 자식이 구현하도록 함.
- 차이점
구현 객체의 같은 동작을 보장하기 위함 | 추상클래스를 상속받아 기능을 이용하고, 확장시키기 위함 |
다중 상속 가능 | 다중 상속 불가능 |
추상메서드만 가능 | 일반메서드+추상메서드 가능 |
상수+추상메서드 형태 | 일반변수(가능)+일반메서드(가능)+추상메서드 형태 |
생성자와 일반변수를 가질 수 없음 | 생성자와 일반변수 모두 가질 수 있음 |
implments | extends |
메서드 선언만 가능 | 메서드의 부분적인 구현이 가능 |
5. 오버로딩이란?
- 같은 이름의 메소드를 여러 개 정의하는 것
- 매개변수의 타입이 다르거나 개수가 달라야 한다.
* return type과 접근 제어자는 영향을 주지 않음.
6. 오버라이딩이란?
- 상속에서 나온 개념
- 상위 클래스(부모 클래스)의 메소드를 하위 클래스(자식 클래스)에서 재정의
- 오버라이딩을 할 때 개발자의 실수를 방지하기 위해 메서드 위에 @Override 를 관례적으로 적는다.
7. 오버로딩과 오버라이딩의 차이점은?
- 위에 정리
8. Array List란?
- 배열인데 메모리 위치가 쭉 이어짐
9. Linked List란?
- 배열인데 메모리위치가 뒤죽박죽
10. 어레이 리스트와 링크드 리스트의 차이점은?
- ArrayList : 메모리 밀도가 1, 삭제 시 기능 고려 , 검색 빠름
- LinkedList : 메모리 밀도 분포, 삭제 시 빠름, 검색 시 기능 고려
11. 스트링, 스트링 버퍼, 스트링 빌더의 특징은?
- String : String은 immutable(불변) , new 연산을 통해 생성되면 그 인스턴스의 메모리 공간은 절대 변하지 않는다.
+,concat 시 메모리의 내용이 변하는게 아니라 새로운 String 인스턴스 생성
문자열 연산이 적고 조회가 많을 때 멀티쓰레드 환경에서 사용하면 좋음.
- StringBuffer, StringBuilder 공통점 :
mutable(변경가능)하다.
즉 문자열 연산에 있어서 클래스를 한 번만 만들고(new),
연산이 필요할 때 크기를 변경시켜서 문자열을 변경한다.
그러므로 문자열 연산이 자주 있을 때 사용하면 성능이 좋다!
- StringBuffer, StringBuilder 차이점 :
tringBuffer는 멀티스레드 환경에서 synchronized키워드가 가능하므로 동기화가 가능하다.
즉, thread-safe 하다.
문자열 연산이 많을 때 멀티스레드 환경에서는 StringBuffer,
싱글 스레드 또는 쓰레드를 신경 쓰지 않아도 되는 환경에서는 StringBuilder를 사용하는 것이 적절하다.
- Synchronized 란 :
동기화란 하나의 자원(데이터)에 대해서 여러 스레드가 사용하려고 할 때 한 시점에서 하나의 스레드만 사용할 수 있도록 하는 것이다.
12. GC에 대해 설명해보라.
- 불필요한 메모리를 정리해주는 프로그램
OS에게 메모리를 요구할 때 실행된다.
C에는 이게 없어서 되게 힘들다 한다.
13. primitive type과 reference type 설명
- Primitive Type (기본형) : int, char, long, double.... 같은 자료형
- Reference Type (참조형) : Class, Interface, Array.. 등등
14. DI 란?
- 의존성주입, 객체 내부에서 인스턴스를 생성하는 것이 아니라 외부 컨테이너에서 미리 생성 후 객체로 주입
15. json 이란?
- JSON은 경량(Lightweight)의 DATA-교환 형식
- Javascript에서 객체를 만들 때 사용하는 표현식을 의미한다.
- JSON 표현식은 사람과 기계 모두 이해하기 쉬우며 용량이 적어서, 최근에는 JSON이 XML을 대체해서 데이터 전송 등에 많이 사용한다.
- 특정 언어에 종속되지 않으며, 대부분의 프로그래밍 언어에서 JSON 포맷의 데이터를 핸들링할 수 있는 라이브러리를 제공한다.
16. xml 이란?
- XML은 HTML과 매우 비슷한 문자 기반의 마크업 언어(text-based markup language)
17. RDBMS 란?
- 관계형 데이터베이스 관리 시스템.
- 테이블-칼럼 형태의 데이터 저장 방식
- 테이블과 테이블 간의 연관관계(주로 외래 키 형태)를 이용해 필요한 정보를 구하는 방식
18. MVC 란?
- model-view-controller의 약자로 소프트웨어 공학에서 애플리케이션을 구성하는 패턴
19. 싱글톤 패턴이란?
- 애플리케이션이 시작될 때 어떤 클래스가 최초 한 번만 메모리를 할당하고(Static) 그 메모리에 인스턴스를 만들어 사용하는 디자인 패턴.
- 고정된 메모리 영역을 얻으면서 한 번의 new로 인스턴스를 사용하기 때문에 메모리 낭비를 방지
20. 팩토리 패턴이란?
- 객체를 생성하기 위한 인터페이스를 정의하는데, 어떤 클래스의 인스턴스를 만들지는 서브클래스에서 결정
- 팩토리 메서드 패턴을 이용하면 클래스의 인스턴스를 만드는 일을 서브클래스에게 맡기게 된다.
21. HashCode 설명
- 자바에서 동일한 이름의 객체가 여러 개 생성될 수 있는데 이 객체들은 이름만 같을 뿐 서로 다른 상태를 가진 가진 객체들이 되는 것이다.
이런 객체를 구별하기 위해, 고유한 정수값으로 출력시켜주는 메소드가 바로 hashCode()다
22. Call by Reference, Call by Value 의 차이점은?
- Call by reference : 참조에 대한 호출
- Call by Value : 값에 대한 호출
23. 링크드리스트와 배열의 차이?
- 10번 참조
24. Git, Github사용 여부
- 사용 O
25. 오픈소스 사용여부
- 사용 O
26. 프로젝트는 어떤 걸 해봤나?
- 포트폴리오 참조
27. DB는 어떤걸 써봤나?
- MYSQL
28. SQL은 어느 정도 할 줄 아나?
- 적당히...
29. DDL, DML, DCL에 대해 설명해보세요.
- DDL : Data Define Language 의 약자로, 스키마/도메인/테이블/뷰/인덱스를 정의/변경/제거할 때 사용하는 언어이다.
테이블을 생성하고, 테이블 내용을 변경하고, 테이블을 없애버리는 것.
흔히 CREATE, ALTER, DROP 을 떠올리면 된다.
- DML : Data Manipulation Language 의 약자로, Query(질의)를 통해서 저장된 데이터를 실질적으로 관리하는 데 사용한다.
테이블 안의 데이터 하나하나를 추가하고 삭제하고 수정하는 것.
흔히 INSERT, DELETE, UPDATE 를 떠올리면 된다.
- DCL : Data Control Language 의 약자로, 보안/무결성/회복/병행 제어 등을 정의하는데 사용한다. 데이터 관리 목적.
흔히 COMMIT, ROLLBACK, GRANT, REVOKE 를 떠올리면 된다.
30. 자바스크립트와 제이쿼리의 차이점은?
- javascript를 더 사용하기 쉽게 만든 것이 Jquery.
31. 게시판 만들 줄 아나?
- 넵
32. 그럼 게시판에서 페이징의 로직 순서에 대해 설명해보라.
- 따로 정리
- 또는 게시판 기능의 간단한 로직 설명해보라.
- CURE
33. SPA의 장점 및 단점은?
- Single Page Application
- 초기 구동 속도 느림
- SEO 검색엔진 최적화 문제
'개발이야기' 카테고리의 다른 글
Spring boot Process finished with exit code 0 해결 (0) | 2021.06.28 |
---|---|
맥북프로 wifi, 블루투스 간섭 있을 시 해결법 (0) | 2020.08.03 |
맥북 모하비 배터리 방전 해결방법 (2) | 2019.05.27 |
웹 크롤러 Jsoup 사용 방법 정리 (0) | 2019.05.13 |
Ground X 코딩테스트, 면접후기 (14) | 2019.05.10 |