brunch

You can make anything
by writing

C.S.Lewis

by 이승현 May 17. 2016

안드로이드 개발자 이직 공부 #05

자바 [Android]

5. 이직 공부

  - 자바



본인의 Java 스킬이 어느 정도라고 생각하세요?
상 정도로 생각합니다
NIO에 대해 설명해 주세요.




앞으론 "상" 이라고 안 할 거예요.

NIO(NonBloking/New Input-Output) 써본 적도 없는데 ㅋㅋ




안드로이드는 자바를 이용하기 때문에(아닌 경우도 있지만) 많이 물어볼 거 같지만,

의외로 자바를 안 물어보거나 간단히 물어보는 경우가 종종 있었어요.

기본적으로 자바는 마스터하고 있다고 생각했나 봐요.


광범위한 자바를 모두 다루지 않고 제가 받은 질문들 위주로 글을 쓸게요.



OOP (Object Oriented Programming - 객체 지향 프로그래밍)


1. 상속성 (Inheritance) : 자식 객체가 부모 객체의 모든 것을 상속받는 것

2. 다형성 (Polymorphism) : 메소드의 기능이 다양해지는 것

3. 은닉성 (Information Hiding) : 외부 프로그램으로부터 정보를 감추는 것

4. 캡슐화 (Encapsulation) : 메소드 내용을 알 필요 없이, 호출 형태만 알면 결과를 얻어낼 수 있는 성질


중요한 개념이지만 경력직한테도 물어보네요.


Overriding과 Overloading


1. 오버라이딩 : 상속관계에서 부모 메소드 내용을 자식 클래스에서 바꾸는 것.

- 반환 타입이 일치해야 함.

- 부모 메소드의 접근 제한 자보다 자식 메소드의 접근 제한자의 접근 범위가 같거나 넓어야 한다.

- 파라미터 변수의 종류와 순서가 같아야 함.


2. 오버로딩 : 호출 시 그 해당 메소드나 생성자에 매핑되어 호출되도록 인수의 종류나 순서가 다른, 같은 이름의 메소드나 생성자를 정의하는 것.

- 생성자 / 메소드 오버로딩

- 반환 타입 관계없음

- 상속과 관계없음

- 파라미터 변수의 종류나 순서가 달라야 함


메모리 구조


1. Stack : 변수 할당 공간

- 질서 정연한 구조

- 변수가 선언되면 stack의 한 부분에 그 변수를 위한 주소가 할당되고, 그 값은 null로 초기화된 상태로 존재한다.


2. Heap : 객체 할당 공간

- 무질서한 구조

- new 연산자에 의해 객체가 생성될 때 heap의 어느 한 주소에 객체가 만들어지고, 그 주소 값은 stack에 할당된 변수에 저장된다.


3. Static : 클래스, 인터페이스, static 자원 할당 공간

- 공유되어지는 공간 구조


Garbage Collection


굉장히 중요한 개념인데 딱 한 군데에서만 물어봤어요.

아래 Naver D2 사이트에 이해하기 쉽게 설명되어 있어요.

다 읽고 다 이해합시다.

(Naver D2에 다른 자료들도 많이 봤어요.)


http://d2.naver.com/helloworld/1329


Collection Framework



1. Collection

 - List : 순서가 있고 데이터를 중복해서 포함할 수 있다.

    - Stack : LIFO 구조도 되어있음.

    - LinkedList

    - ArrayList : 배열에 동적 메모리 증가 기능을 구현한 클래스. (동기화 보장 X)

    - Vector : ArrayList에 동기화가 보장되도록 최적화한 클래스.


 - Set : 순서가 없고 데이터를 중복해서 포함할 수 없다.

  - HashSet

  - SortedSet - SortedSet 인터페이스를 구현한 TreeSet 클래스. 데이터들이 오름차순으로 정렬.


2. Map

 - Key와 Value 형태의 데이터 집합. key는 중복 허용하지 않고 value는 중복 허용.

  - HashTable : 내부적으로 Hash 기법을 이용. 동기화를 보장한다. key value에 null 불가능.

  - HashMap : 동기화를 보장하지 않는다. key value에 null 가능.

  - SortedMap - SortedMap 인터페이스를 구현한 TreeMap 클래스. Key를 기준으로 오름차순으로 정렬.


Reflection


객체를 통해 클래스의 정보를 분석해 내는 프로그램 기법.

클래스의 데이터 구조에 대한 정보를 이름을 기반으로 동적으로 얻을 수 있다.



같은 안드로이드 개발이라도 어느 분야를 개발하느냐에 따라 자바 면접 질문이 달라지는 거 같아요.

구글에 "자바 면접 질문"을 검색해보면 많은 글이 있는데 한 번씩 읽어보세요.




오래전에 본 면접 질문은 가물가물하네요.

평소 아는 개념이라도 입 밖으로 정리해서 꺼내기가 쉽지 않아요.

근데 입 밖으로 꺼내는 분들이 있으니 공부해야죠..ㅠ

브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari