주니어 자바 개발자를 위한 100가지 질문[1]

‘커리어리’라는 어플을 보다가 좋은 글이 있어 공유해봅니다. 평소에 자바에 대해 깊게 공부했다 생각하였는데 이 글을 보고나니 다시 공부해야겠다는 생각이 들었습니다. 하루의 한문제라도 풀고, 생각한 내용들을 업데이트 하겠습니다.

커리어리-주니어 자바 개발자를 위한 100가지 질문(1)

기초

  • JDK와 JRE의 차이점은 무엇입니까?
    • JDK(Java Development Kit)은 말 그대로 자바 개발 키트 입니다. 자바 어플리케이션을 개발하기 위한 환경을 지원합니다. JDK는 JRE를 포함 할 뿐만 아니라 컴파일러(javac),javadoc,jar 등 개발에 유용한 도구를 포함 하고 있습니다.
    • JRE(Java Runtime Environment)는 자바 실행 환경입니다. JRE는 JVM 뿐만 아니라 Java binaries, Java 클래스 라이브러리 등을 포함 하고 있어 자바 프로그램의 실행을 지원합니다.
  • ==와 equals의 차이점은 무엇입니까?
    • == 연산자는 비교하고자 하는 두개의 대상의 주소값을 비교하고, equals는 비교하고자 하는 두개의 대상의 값 자체를 비교합니다.
  • 두 객체가 동일한 hashCode를 가지면 Equals()가 참이어야 합니다, 그렇죠?
    • 아닙니다. 해시 충돌로 인하여 해시값이 같을 수 있습니다.
  • 자바에서 final의 기능은 무엇입니까?
    • 클래스나 변수에 final을 붙이면 처음 정의된 상태가 변하지 않는 것을 보장한다는 의미입니다.
    • 변수, 메서드, 클래스에 사용될 수 있습니다.
  • 자바에서 Math.round(-1.5)는 무엇을 의미합니까?
  • String은 기본 데이터 타입입니까?
  • 자바에서 문자열을 조작하는 클래스는 무엇이 있습니까? 각 클래스의 차이점은 뭘까요?
  • String str =”i”와 String str = new String(“i”)가 동일합니까?
  • 문자열을 반전시키는 가장 좋은 방법은 무엇인가요?
  • String 클래스의 일반적인 메서드는 무엇이 있나요?
  • 추상 클래스에서 추상 메서드는 필수적인가요?
  • 보통의 클래스와 추상 클래스의 차이는 무엇인가요?
  • final은 추상 클래스를 수정할 때 사용할 수 있나요?

Container

  • 자바 컨테이너란 무엇인가요?
  • Collection과 Collections의 차이는 무엇인가요?
  • List, Set, Map의 차이점을 말해주세요.
  • HashMap과 Hashtable의 차이는 무엇인가요?
  • 각각 어떤 상황에서 HashMap과 TreeMap을 선택하나요?
  • HashMap 구현 원칙은 무엇인가요?
  • HashSet 구현 원칙은 무엇인가요?
  • ArrayList와 LinkedList의 차이점은 무엇인가요?
  • Array에서 List로 전환하려면 어떻게 해야하나요?
  • ArrayList와 Vector의 차이점을 말해주세요.
  • Array와 ArrayList의 차이점을 말해주세요.
  • Queue에서, poll()과 remove()의 차이는 무엇인가요?
  • thread-safe한 컬렉션 클래스들은 무엇이 있을까요?
  • iterator란 무엇인가요?
  • iterator의 사용 목적은 무엇인가요? 어떤 특징이 있죠?
  • iterator와 listIterator의 차이는 무엇인가요?

multi-threading

  • 병렬과 동시성의 차이점을 말해주세요.
  • 스레드와 프로세스의 차이를 말해주세요..
  • 데몬 스레드는 무엇인가요?
  • 스레드를 만드는 방법을 나열해주세요.
  • runnable과 callable의 차이는 무엇인가요?
  • 스레드의 여러가지 상태에 대해 말해주세요.
  • sleep()과 wait()의 차이는 무엇인가요?
  • notify()와 notifyAll()의 차이는 무엇인가요?
  • thread run()과 tnread start()의 차이는 무엇인가요?
  • 스레드 풀을 생성할 수 있는 여러가지 방법을 말해주세요.
  • 스레드 풀의 상태에 대해 말해주세요.
  • 스레드 풀에서 submit()과 execute()의 차이는 무엇인가요?
  • 자바 프로그램에서 멀티 스레드 작업의 안전성을 어떻게 보장할 수 있을까요?

reflection

  • reflection이란 무엇인가요?
  • 자바 직렬화란 무엇인가요? 어떤 상황에서 필요한가요?
  • 동적 프록시란 무엇인가요?
  • 동적 프록시는 어떻게 사용하나요?

object copy

  • 복사가 사용되는 이유는 무엇인가요?
  • 객체 복사는 어떻게 할 수 있나요?
  • 깊은 복사와 얕은 복사의 차이를 말해주세요.