Skip to content

Latest commit

Β 

History

History
212 lines (117 loc) Β· 9.1 KB

java.md

File metadata and controls

212 lines (117 loc) Β· 9.1 KB

Java

πŸ“š κ³΅λΆ€ν•œ 자료
  • μžλ°”μ˜ 정석

1. JVM이 μ •ν™•νžˆ 무엇이고, μ–΄λ–€ κΈ°λŠ₯을 ν•˜λŠ”μ§€ μ„€λͺ…ν•΄ μ£Όμ„Έμš”. ⭐️

  • 그럼, μžλ°” 말고 λ‹€λ₯Έ μ–Έμ–΄λŠ” JVM μœ„μ— 올릴 수 μ—†λ‚˜μš”?

  • λ°˜λŒ€λ‘œ JVM 계열 μ–Έμ–΄λ₯Ό 일반적으둜 μ»΄νŒŒμΌν•΄μ„œ μ‚¬μš©ν•  순 μ—†λ‚˜μš”?

  • JVMκ³Ό λ‚΄λΆ€μ—μ„œ μ‹€ν–‰λ˜κ³  μžˆλŠ” ν”„λ‘œκ·Έλž¨μ€ λΆ€λͺ¨ ν”„λ‘œμ„ΈμŠ€ - μžμ‹ ν”„λ‘œμ„ΈμŠ€ 관계λ₯Ό κ°–κ³  μžˆλ‹€κ³  봐도 λ¬΄λ°©ν•œκ°€μš”?

  • Java bytecodeλž€ λ¬΄μ—‡μΈκ°€μš”?

  • κ·Έλ ‡λ‹€λ©΄ JavaλŠ” 컴파일 μ–Έμ–΄μΌκΉŒμš”, 인터프리터 μ–Έμ–΄μΌκΉŒμš”?

  • JVM의 λ™μž‘ 방식에 λŒ€ν•΄ κ°„λ‹¨ν•˜κ²Œ μ„€λͺ…ν•΄μ£Όμ„Έμš”.

  • JVM의 ꡬ쑰에 λŒ€ν•΄ μ„€λͺ…ν•΄μ£Όμ„Έμš”.

  • JVM의 Runtime Data Area μ˜μ—­μ€ λ¬΄μ—‡μΈκ°€μš”?

  • JVM Stack κ³Ό Heap μ˜μ—­μ˜ κ°€μž₯ 큰 차이점은 λ¬΄μ—‡μΈκ°€μš”?

  • λ§Œμ•½ 두 개의 μŠ€λ ˆλ“œκ°€ λ™μ‹œμ— νž™μ— μžˆλŠ” λ©”λͺ¨λ¦¬μ— μ ‘κ·Όν•  λ•Œ λ™μ‹œμ„± λ¬Έμ œκ°€ 생길 수 μžˆμŠ΅λ‹ˆλ‹€. ꡬ체적인 μ˜ˆμ‹œλ‘œλŠ” μ–΄λ–€ 것이 μžˆμ„κΉŒμš”?

  • μŠ€λ ˆλ“œμ΄ λ©”μ„œλ“œλ³„λ‘œ μŠ€νƒμ΄ ν• λ‹Ή λ˜λŠ”λ°, λ©”μ„œλ“œκ°€ μ’…λ£Œλ˜κ²Œ 되면 κ·Έ λ©”μ„œλ“œ μ•ˆμ—μ„œ μ•„μš©λœ 둜컬 λ³€μˆ˜κ°€ μ“Έλͺ¨ 없어지기 λ•Œλ¬Έμ— λ©”λͺ¨λ¦¬ ν•΄μ œκ°€ λ˜λŠ”λ°, λ§Œμ•½ λ©”μ„œλ“œ μ•ˆμ—μ„œ μ„ μ–Έν•œ λ³€μˆ˜κ°€ μ°Έμ‘°ν˜• νƒ€μž…μΈ κ²½μš°μ—λŠ” μ–΄λ–€ μ‹μœΌλ‘œ λ©”λͺ¨λ¦¬κ°€ μ‚¬μš©λ˜λ‚˜μš”?

  • Java λ©”λͺ¨λ¦¬ μ˜μ—­ 쀑 Stack κ³Ό Heap μ—λŠ” 각각 μ–΄λ–€ 것이 μ €μž₯λ˜λ‚˜μš”?

  • κΈ°λ³Έν˜• 데이터 νƒ€μž…κ³Ό μ°Έμ‘°ν˜• 데이터 νƒ€μž…μ˜ μ‹€μ œ 값은 각각 μ–΄λŠ μ˜μ—­μ— μ €μž₯λ˜λ‚˜μš”?

  • κ·Έλ ‡λ‹€λ©΄, Person p = new Person() λ₯Ό μ‹€ν–‰ν–ˆμ„ λ•Œ p 와 Person() 객체 λŠ” 각각 μ–΄λŠ μ˜μ—­μ— μ €μž₯λ˜λ‚˜μš”?

  • Java λ©”λͺ¨λ¦¬μ˜ μžˆλŠ” μŠ€νƒ ν”„λ ˆμž„μ€ λ©”μ„œλ“œκ°€ μ’…λ£Œλ˜λ©΄ μ‚¬λΌμ§‘λ‹ˆλ‹€. ν•˜μ§€λ§Œ νž™ μ˜μ—­μ— μžˆλŠ” 객체듀은 λ©”μ„œλ“œκ°€ μ’…λ£Œλ˜λ„ λ©”λͺ¨λ¦¬μ— 남아 μžˆμŠ΅λ‹ˆλ‹€. μ™œ κ·ΈλŸ΄κΉŒμš”?

  • Static μ˜μ—­κ³Ό Heap μ˜μ—­μ˜ 곡톡점과 차이점은 λ¬΄μ—‡μΈκ°€μš”?

2. final ν‚€μ›Œλ“œλ₯Ό μ‚¬μš©ν•˜λ©΄, μ–΄λ–€ 이점이 μžˆλ‚˜μš”?

  • κ·Έλ ‡λ‹€λ©΄ 컴파일 κ³Όμ •μ—μ„œ, final ν‚€μ›Œλ“œλŠ” λ‹€λ₯΄κ²Œ μ·¨κΈ‰λ˜λ‚˜μš”?

3. λ³€μˆ˜λŠ” μ–΄λ–€ κ²ƒμΈκ°€μš”?

  • μ°Έμ‘°ν˜• λ³€μˆ˜μ—μ„œ μ‹€μ œ 값을 μ €μž₯ν•˜μ§€ μ•Šκ³  μ£Όμ†Œκ°’μ„ μ €μž₯ν•˜λŠ” μ΄μœ λŠ” λ¬΄μ—‡μΈκ°€μš”?

  • κ·Έλ ‡λ‹€λ©΄ κΈ°λ³Έν˜• λ³€μˆ˜λŠ” μŠ€νƒ μ˜μ—­ 내에 μ‹€μ œ 값을 μ €μž₯ν•˜λŠ” μ΄μœ λŠ” λ¬΄μ—‡μΈκ°€μš”?

  • λ³€μˆ˜μ™€ μƒμˆ˜μ˜ μ°¨μ΄λŠ” λ¬΄μ—‡μΈκ°€μš”?

4. λΆ€λ™μ†Œμˆ˜μ μ΄ λ¬΄μ—‡μΈκ°€μš”?

  • λΆ€λ™μ†Œμˆ˜μ μ„ μ‚¬μš©ν•˜λ©΄, μ†Œμˆ˜ 계산 였차 λ¬Έμ œκ°€ μ‚¬λΌμ§€λ‚˜μš”?

  • μžλ°”μ—μ„œ μ‹€μˆ˜ν˜• 계산을 μ •ν™•ν•˜κ²Œ ν•˜κΈ° μœ„ν•΄μ„œλŠ” μ–΄λ–»κ²Œ ν•΄μ•Ό ν•˜λ‚˜μš”?

  • κ·Έλ ‡λ‹€λ©΄ BigDecimal 은 μ‹€μˆ˜λ₯Ό μ–΄λ–€ ν˜•νƒœλ‘œ μ €μž₯ν•˜λ‚˜μš”?

5. == κ³Ό equals 의 차이점은 λ¬΄μ—‡μΈκ°€μš”?

  • Object 의 equals λ©”μ„œλ“œλŠ” μ–΄λ–»κ²Œ κ΅¬ν˜„λ˜μ–΄ μžˆλ‚˜μš”?

  • μ•„λž˜μ˜ μ½”λ“œλŠ” μ–΄λ–€ κ²°κ³Όκ°€ λ‚˜μ˜¬κΉŒμš”? 이유λ₯Ό μ„€λͺ…ν•΄λ³΄μ„Έμš”.

    Integer a = new Integer(3);
    Integer b = new Integer(3);
    System.out.println(a==b);
  • 그럼, equals() 와 hashCode() 에 λŒ€ν•΄ μ„€λͺ…ν•΄ μ£Όμ„Έμš”.

  • hashCode() 의 μš©λ„λŠ” λ¬΄μ—‡μΈκ°€μš”?

  • 본인이 hashCode() λ₯Ό μ •μ˜ν•΄μ•Ό ν•œλ‹€λ©΄, μ–΄λ–€ 점을 염두에 두고 κ΅¬ν˜„ν•  것 κ°™μœΌμ„Έμš”?

  • κ·Έλ ‡λ‹€λ©΄ equals() λ₯Ό μž¬μ •μ˜ ν•΄μ•Ό ν•  λ•Œ, μ–΄λ–€ 점을 염두에 두어야 ν•˜λŠ”μ§€ μ„€λͺ…ν•΄ μ£Όμ„Έμš”.

  • λ§Œμ•½ equals() 와 hashCode() λ₯Ό λ‘˜ λ‹€ μž¬μ •μ˜ ν–ˆμ„ λ•Œ, 객체의 μ£Όμ†Œκ°’μ„ 비ꡐ해야 ν•œλ‹€λŠ” 상황이 μ˜¨λ‹€λ©΄ μ–΄λ–»κ²Œ ν•˜λ‚˜μš”?

6. λ‹€ν˜•μ„±μ€ λ¬΄μ—‡μΈκ°€μš”? 또 μ–Έμ œ ν™œμš©ν•  수 μžˆμ„κΉŒμš”?

7. μΈν„°νŽ˜μ΄μŠ€μ™€ μΆ”μƒν΄λž˜μŠ€μ˜ 차이점은 λ¬΄μ—‡μΌκΉŒμš”?

  • μ™œ ν΄λž˜μŠ€λŠ” 단일 μƒμ†λ§Œ κ°€λŠ₯ν•œλ°, μΈν„°νŽ˜μ΄μŠ€λŠ” 2개 이상 κ΅¬ν˜„μ΄ κ°€λŠ₯ν• κΉŒμš”?

  • μΈν„°νŽ˜μ΄μŠ€μ—μ„œ, default method λž€ μ–΄λ–€ κ²ƒμΈκ°€μš”? μ–΄λ–€ μƒν™©μ—μ„œ 주둜 μ‚¬μš©λ˜λ‚˜μš”?

  • 클래슀A κ°€ μΈν„°νŽ˜μ΄μŠ€A, μΈν„°νŽ˜μ΄μŠ€B λ₯Ό κ΅¬ν˜„ν•œλ‹€κ³  ν•©μ‹œλ‹€. λ§Œμ•½ μΈν„°νŽ˜μ΄μŠ€A, μΈν„°νŽ˜μ΄μŠ€B 에 λ™μΌν•œ μ‹œκ·Έλ‹ˆμ²˜λ₯Ό 가진 λ™μΌν•œ default method κ°€ μžˆμ„ λ•Œ, 닀쀑 μƒμ†μ˜ 문제점이 λ°œμƒν•˜λ‚˜μš”? 이것을 μ–΄λ–»κ²Œ ν•΄κ²°ν•˜λ‚˜μš”?

8. A λΌλŠ”ν΄λž˜μŠ€μ— νŠΉμ •μ½”λ“œλ₯Ό μ£Όκ³  μ‹Άμ„λ•Œ, 상속과 μ‘°ν•©μ˜ μ°¨μ΄λŠ” 무엇이고, 각각의 μž₯점을 μ„€λͺ…ν•΄μ£Όμ„Έμš”.

9. λ¦¬ν”Œλ ‰μ…˜μ— λŒ€ν•΄ μ„€λͺ…ν•΄ μ£Όμ„Έμš”.

  • 의미만 듀어보면 λ¦¬ν”Œλ ‰μ…˜μ€ λ³΄μ•ˆμ μΈ λ¬Έμ œκ°€ μžˆμ„ κ°€λŠ₯성이 μžˆμ–΄λ³΄μ΄λŠ”λ°, μ‹€μ œλ‘œ κ·Έλ ‡κ²Œ μƒκ°ν•˜μ‹œλ‚˜μš”? λ§Œμ•½ κ·Έλ ‡λ‹€λ©΄, μ–΄λ–»κ²Œ 방지할 수 μžˆμ„κΉŒμš”?

  • λ¦¬ν”Œλ ‰μ…˜μ„ μ–Έμ œ ν™œμš©ν•  수 μžˆμ„κΉŒμš”?

10. static class와 static methodλ₯Ό 비ꡐ해 μ£Όμ„Έμš”.

  • static 을 μ‚¬μš©ν•˜λ©΄ μ–΄λ–€ 이점을 얻을 수 μžˆλ‚˜μš”? μ–΄λ–€ μ œμ•½μ΄ κ±Έλ¦΄κΉŒμš”?
  • 컴파일 κ³Όμ •μ—μ„œ static 이 μ–΄λ–»κ²Œ μ²˜λ¦¬λ˜λŠ”μ§€ μ„€λͺ…ν•΄ μ£Όμ„Έμš”.

11. μžλ°”μ—μ„œ new ν‚€μ›Œλ“œλ₯Ό μ‚¬μš©ν•˜λ©΄ μ–΄λ–€ 일이 μΌμ–΄λ‚˜λ‚˜μš”? λ©”λͺ¨λ¦¬ κ΄€μ μ—μ„œ μžμ„Ένžˆ μ„€λͺ…ν•΄μ£Όμ„Έμš”.

12. μžλ°”μ—μ„œ μŠ€λ ˆλ“œ ν’€(Thread Pool) μ΄λž€ μ–΄λ–€ 것이고 μ–Έμ œ μ‚¬μš©ν•˜λ‚˜μš”?

13. Error 와 Exception 의 차이가 λ¬΄μ—‡μΈκ°€μš”?

  • 체크 μ˜ˆμ™Έμ™€ 언체크 μ˜ˆμ™Έμ˜ μ°¨μ΄λŠ” λ¬΄μ—‡μΈκ°€μš”?

  • OutOfMemoryError λŠ” μ–΄λ–€ κ²½μš°μ— λ°œμƒν•˜λ‚˜μš”?

  • StackOverflowError λŠ” μ–΄λ–€ κ²½μš°μ— λ°œμƒν•˜λ‚˜μš”?

  • μ™œ 체크 μ˜ˆμ™ΈλŠ” λ°˜λ“œμ‹œ try-catch 문으둜 μ²˜λ¦¬ν•΄μ•Όκ³  언체크 μ˜ˆμ™ΈλŠ” μ²˜λ¦¬ν•˜μ§€ μ•Šμ•„λ„ λ κΉŒμš”?

14. μžλ°”μ—μ„œ μ“°λ ˆλ“œλ₯Ό μƒμ„±ν•˜λŠ” λ°©λ²•μ—λŠ” μ–΄λ–€ 것듀이 μžˆλ‚˜μš”?

  • κ·Έλ ‡λ‹€λ©΄ 두 λ°©λ²•μ˜ μž₯단점은 λ¬΄μ—‡μΈκ°€μš”?

  • Runnable μΈν„°νŽ˜μ΄μŠ€μ˜ μš©λ„λŠ” λ¬΄μ—‡μΈκ°€μš”?

  • μ™œ Thread 클래슀의 public static native Thread currentThread(); λŠ” static 으둜 μ„ μ–Έλ˜μ–΄ μžˆλ‚˜μš”?

  • μ“°λ ˆλ“œμ˜ start() κ³Ό run() λ©”μ„œλ“œλŠ” μ–΄λ–€ 차이가 μžˆλ‚˜μš”?

  • μ•„λž˜ μ½”λ“œμ˜ κ²°κ³ΌλŠ” μ–΄λ–»κ²Œ λ κΉŒμš”?

    class MyRunnable implements Runnable{
      public void run(){
        System.out.println("My Runnable is running");
        Thread currThread = Thread.currentThread();
        currThread.setName("thread in run method");
        System.out.println("Current thread in run : " + currThread.getName());
      }
    }
    
    class TestRunnable {
      public static void main(String[] args) {
        Thread thread = new Thread(new MyRunnable());
        thread.run();
        System.out.println("Current thread in main : " + Thread.currentThread().getName());
      }
    }
  • μƒˆλ‘œ μƒμ„±λœ μ“°λ ˆλ“œμ˜ 호좜 μŠ€νƒμ€ μ–Έμ œ μ‚¬λΌμ§ˆκΉŒμš”?

  • Callable κ³Ό Runnable 의 μ°¨μ΄λŠ” λ¬΄μ—‡μΈκ°€μš”? μ™œ Callable κ³Ό Future μΈν„°νŽ˜μ΄μŠ€κ°€ μƒκ²Όλ‚˜μš”?

  • ExecutorService, Future λŠ” 각각 무엇이며 μ–΄λ–€ μš©λ„λ‘œ μ“°μ΄λ‚˜μš”?

15. μ“°λ ˆλ“œμ˜ μƒνƒœκ°’μ—λŠ” μ–΄λ–€ 것듀이 μžˆλ‚˜μš”?

  • WAITING κ³Ό BLOCKED 의 μ°¨μ΄λŠ” λ¬΄μ—‡μΈκ°€μš”?

  • μ™œ sleep() κ³Ό yield() λŠ” static λ©”μ„œλ“œμΈκ°€μš”?

  • yield() κ³Ό join() 의 차이점은 λ¬΄μ—‡μΈκ°€μš”?

  • sleep() κ³Ό wait() 의 차이점과 곡톡점은 λ¬΄μ—‡μΈκ°€μš”?

16. μ“°λ ˆλ“œμ˜ λ™κΈ°ν™”λŠ” 무엇이며, 동기화에 μ‚¬μš©λ˜λŠ” 방법듀은 μ–΄λ–€ 것이 μžˆλ‚˜μš”?

  • synchronized 에 μ˜ν•œ 방법은 무엇이며, μ–΄λ–€ μž₯단점이 μžˆμ„κΉŒμš”?

  • wait()와 notify() λ₯Ό μ΄μš©ν•œ 방법은 무엇이며, μ–΄λ–€ μž₯단점이 μžˆμ„κΉŒμš”?

  • java.util.concurrent.locks 에 μžˆλŠ” Lock κ³Ό Condition 은 μœ„μ˜ λ¬Έμ œλ“€μ„ μ–΄λ–»κ²Œ ν•΄κ²°ν–ˆλ‚˜μš”?

  • volatile ν‚€μ›Œλ“œλŠ” μ–΄λ–»κ²Œ λ³€μˆ˜μ— λŒ€ν•œ 읽기와 μ“°κΈ°λ₯Ό λ™κΈ°ν™”ν•˜λ‚˜μš”?

17. ConcurrentHashMap 은 무엇이며 μ–΄λ–»κ²Œ thread-safe λ₯Ό 보μž₯ν•˜λ‚˜μš”?

  • 버킷이 λΉ„μ–΄μžˆλŠ” 경우, μƒˆλ‘œμš΄ λ…Έλ“œλ₯Ό μΆ”κ°€ν•  λ•ŒλŠ” μ–΄λ–»κ²Œ 락을 걸지 μ•Šκ³  thread-safe λ₯Ό 보μž₯ν•  수 μžˆλ‚˜μš”?

18. ν•¨μˆ˜ν˜• ν”„λ‘œκ·Έλž˜λ°μ€ 무엇이며, μ™œ ν•„μš”ν•œκ°€μš”?

  • ν•¨μˆ˜ν˜• ν”„λ‘œκ·Έλž˜λ°μ˜ νŠΉμ§•μ„ μ„€λͺ…ν•΄μ£Όμ„Έμš”.

  • μžλ°”μ—μ„œλŠ” μ–΄λ–»κ²Œ ν•¨μˆ˜ν˜• ν”„λ‘œκ·Έλž˜λ°μ„ ν•  수 μžˆλ‚˜μš”?

  • @FunctionalInterface μ–΄λ…Έν…Œμ΄μ…˜μ˜ 역할은 λ¬΄μ—‡μΈκ°€μš”?

  • λžŒλ‹€μ‹κ³Ό ν•¨μˆ˜ν˜• μΈν„°νŽ˜μ΄μŠ€μ˜ κ΄€κ³„λŠ” λ¬΄μ—‡μΈκ°€μš”?

  • λžŒλ‹€ν‘œν˜„μ‹κ³Ό 읡λͺ…ν΄λž˜μŠ€μ˜ μ°¨μ΄λŠ” λ¬΄μ—‡μΈκ°€μš”?

  • μžλ°”μ—μ„œ 미리 ν•¨μˆ˜ν˜• μΈν„°νŽ˜μ΄μŠ€λ₯Ό μ •μ˜ν•΄λ†“μ€ μ΄μœ λŠ” λ¬΄μ—‡μΈκ°€μš”?

19. μžλ°”μ—μ„œ I/Oκ°€ λŠλ¦°μ΄μœ λŠ” λ¬΄μ—‡μΈκ°€μš”?

  • μš΄μ˜μ²΄μ œμ—μ„œ I/OλŠ” μ–΄λ–»κ²Œ λ™μž‘ν•˜λ‚˜μš”?

  • μžλ°” IO νŒ¨ν‚€μ§€κ°€ OS의 I/O 보닀 훨씬 느린 μ΄μœ λŠ” λ¬΄μ—‡μΈκ°€μš”?

  • μžλ°”μ—μ„œ NIO νŒ¨ν‚€μ§€λŠ” μ™œ IO νŒ¨ν‚€μ§€μ— λΉ„ν•΄ 속도가 λΉ λ₯Έκ°€μš”?

  • 그러면 IO κ°€ 무쑰건 λ‚˜μœ κ²ƒμΌκΉŒμš”?

20. μ“°λ ˆλ“œν’€, 컀λ„₯μ…˜ν’€ λ“± μ—¬λŸ¬ Pool 이 μžˆλŠ”λ°, μ΄λ“€μ˜ μš©λ„λŠ” λ¬΄μ—‡μΌκΉŒμš”?

21. μ“°λ ˆλ“œ 둜컬(Thread Local) 은 λ¬΄μ—‡μΈκ°€μš”?

22. Stream μ—μ„œ Map,flatMap κ³Ό Optional μ—μ„œ Map, flatMap의 μ°¨μ΄λŠ” λ¬΄μ—‡μΈκ°€μš”?