Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

UpDown Dev Story

자바의신 정리해봅시다 Volume 2 (21장 ~ 28장) 본문

Java

자바의신 정리해봅시다 Volume 2 (21장 ~ 28장)

updown 2021. 6. 29. 13:40

http://www.yes24.com/Product/Goods/42643850

 

자바의 신 세트 - YES24

성능 전문가로 널리 알려진 저자가 십수 년의 자바 개발 경험을 바탕으로 현장에서 꼭 필요한 기초지식을 정리한 책이다. 현장 중심으로 자바의 기본서를 다시 정의한 책이다. 독자가 생각하며

www.yes24.com

해당 책을 읽고 내용을 정리해보고 있습니다

21장 실수를 방지하기 위한 제네릭이라는 것도 있어요

1. 제네릭이 자바에 추가된 이유는 무엇인가요?

  • 제네릭은 타입 형 병환에서 발생할 수 있는 문제점을 "사전"에 없애기 위해서 만들어졌다.

2. 제네릭 타입의 이름은 T나 E 처럼 하나의 캐릭터로만 선언되어야 하나요?

  • 제네릭의 선언시 타입 이름은 예약어만 아니면 어떤 단어도 사용할 수 있다. 단, 일반적으로 대문자로 시작한다.

3. 메소드에서 제네릭 타입을 명시적으로 지정하기 애매할 경우에는 < > 안에 어떤 기호를 넣어 주어야 하나요?

  • ? 를 제네릭 선언 꺽쇠 사이에 넣으면 Wildcard로 어떤 타입도 올 수 있다.

4. 메소드에서 제네릭 타입을 명시적으로 지정하기에는 애매하지만, 어떤 클래스의 상속을 받은 특정 타입만 가능하다는 것은 나타내려면 < > 안에 어떤 기호를 넣어 주어야 하나요?

  • 특정 타입으로 제네릭을 제한하고 싶을 때에는 "? extends 타입"을 제네릭 선언 안에 넣으면 된다.

5. 제네릭 선언시 wildcard라는 것을 선언했을 때 어떤 제약사항이 있나요?

  • Wildcard 타입을 Object 타입으로만 사용해야 한다.

6. 메소드를 제네릭하게 선언하려면 리턴타입 앞에 어떤 것을 추가해 주면 되나요?

  • 꺽쇠 안에 원하는 제네릭 타입을 명시함으로써 제네릭한 메소드를 선언할 수 있다.

22장 java.lang 다음으로 많이쓰이는 컬렉션 - Part1 (List)

1. Collection 인터페이스를 구현하는 대표적인 3개의 자료구조에는 어떤 것들이 있나요?

  • List , Set , Queue

2. 배열과 같이 순서가 있는 목록형을 나타내는 대표 인터페이스는 무엇인가요?

  • List

3. ArrayList라는 클래스의 생성자 중 매개변수가 없는 기본 생성자를 사용하면 기본적으로 몇 개의 저장공간을 가지나요?

  • 10

4. 만약 ArrayList 클래스의 저장 공간 개수를 처음부터 지정하려면 어떤 생성자를 사용하면 되나요?

  • ArrayList(int 공간개수);

5. ArrayList 객체를 생성할 때 제네릭을 사용하는 이유는 무엇인가요?

  • 컴파일 시 타입을 잘못 지정한 부분을 거럴낼 수 있기 때문에

6. ArrayList에 데이터를 담는 메소드 두가지의 이름은 무엇인가요?

  • add(), addAll()

7. Collection 인터페이스를 구현한 클래스의 객체에서 사용할 수 있는 for 루프의 구조는 어떻게 되나요? 코드를 작성하세요.

  •  
  • List<String> list = new ArrayList<>(); for(String data:list) { System.out.println(data); }


8. Collection 인터페이스를 구현한 클래스의 객체에 저장된 데이터의 갯수를 확인하는 메소드 이름은 무엇인가요?

  • size()

9. ArrayList에서 특정 위치에 있는 데이터를 확인하는 메소드는 무엇인가요?

  • get()

10. ArrayList에서 특정 위치에 있는 데이터를 삭제하는 메소드는 무엇인가요?

  • remove()

11. ArrayList에서 특정 위치에 있는 데이터를 수정하는 메소드는 무엇인가요?

  • set()

12. java.util 패키지에 있는 Stack 이라는 클래스는 어떤 클래스를 확장한 것인가요?

  • List 인터페이스를 구현하고 Vector 클래스를 상속

13. Stack 클래스에서 데이터를 담는 메소드는 무엇인가요?

  • push()

14. Stack 클래스에서 가장 위에 있는 데이터를 확인만 하는 메소드는 무엇인가요?

  • peek()

15. Stack 클래스에서 가장 위에 있는 데이터를 삭제하고 리턴하는 메소드는 무엇인가요?

  • pop()

23장 java.lang 다음으로 많이쓰이는 컬렉션 - Part2 (Set, Queue)

1. 순서와 상관 없는 여러 데이터를 하나의 객체에 저장할 때 사용하는 Collection의 하위 인터페이스는 무엇인가요?

  • Set

2. HashSet 클래스는 생성자를 통하여 저장 가능한 데이터의 초기 크기를 지정할 수 있나요?

  • O


3. HashSet 클래스의 객체에 데이터를 추가하는 메소드는 무엇인가요?

  • add()

4. HashSet 클래스의 객체에 어떤 데이터가 존재하는지 확인하는 메소드는 무엇인가요?

  • contains()

5. HashSet 클래스의 객체에 어떤 데이터를 삭제하는 메소드는 무엇인가요?

  • remove()

6. Queue는 FIFO를 처리하기 위한 클래스들의 인터페이스 입니다. FIFO는 무슨 단어의 약어인가요?

  • First In First Out

7. Deque는 무슨 단어의 약어이며, 용도는 무엇인가요?

  • Double ended Queue

 
8. LinkedList 클래스의 특징을 이야기해 봅시다.

  • 연결 리스트, 링크드 리스트(linked list)는 각 노드가 데이터와 포인터를 가지고 한 줄로 연결되어 있는 방식으로 데이터를 저장하는 자료 구조이다. 이름에서 말하듯이 데이터를 담고 있는 노드들이 연결되어 있는데, 노드의 포인터가 다음이나 이전의 노드와의 연결을 담당하게 된다.

24장 java.lang 다음으로 많이쓰이는 컬렉션 - Part3 (Map)

1. Map 형태의 자료구조는 무엇과 무엇으로 구성되어 있나요?

  • 키 값

2. Map에서 데이터를 저장하는 메소드는 무엇인가요?

  • put()

3. Map에서 특정 키에 할당된 값을 가져오는 메소드는 무엇인가요?

  • get(키값);

4. Map에서 특정 키와 관련된 키와 데이터를 지우는 메소드는 무엇인가요?

  • remove

5. Map에서 키의 목록을 가져오는 메소드는 무엇인가요?

  • keySet

6. Map에 저장되어 있는 데이터의 크기를 가져오는 메소드는 무엇인가요?

  • size

7. HashMap과 Hashtable 중에서 키나 값에 null을 저장할 수 있는 것은 무엇인가요?

  • HashMap


8. HashMap과 Hashtable 중에서 여러 쓰레드에서 동시에 접근해도 문제가 없는 것은 무엇인가요?

  • Hashtable

9. HashMap에서 특정 키가 존재하는지 확인하는 메소드는 무엇인가요?

  • containsKey(키값)

이 장에서 살펴본 클래스 중, 키가 저장되면서 정렬되는 Map에는 어떤 것이 있나요?

  • TreeMap

10. Properties 클래스는 어떤 클래스를 확장한 것인가요?

  • HashTable

Properties 클래스의 객체에 있는 데이터를 파일로 저장할 때에는 어떤 메소드들을 사용하면 되나요?

  • store

25장 쓰레드는 개발자라면 알아두는 것이 좋아요

1. 쓰레드와 프로세스의 차이를 이야기 해 보세요.

  • 프로세스는 운영체제로부터 자원을 할당받는 작업의 단위이고 
  • 스레드는 프로세스가 할당받은 자원을 이용하는 실행의 단위입니다. 
  • 프로세스는 실행될 때 운영체제로부터 프로세서를 할당받고, 운영되기 위해 필요한 주소 공간, 메모리 등 자원을 할당받습니다. 
  • 스레드란 한 프로세스 내에서 동작되는 여러 실행의 흐름으로, 프로세스 내의 주소 공간이나 자원들을 같은 프로세스 내에 스레드끼리 공유하면서 실행됩니다.

3. 위의 문제에서 이야기한 인터페이스에 선언되어 있는 유일한 메소드는 무엇인가요?

  • Runnable

4. 쓰레드 클래스를 만들기 위해서 어떤 클래스를 확장하면 되나요?

  • Runnable

5. 쓰레드가 시작되는 메소드의 이름은 무엇인가요?

  • run

6. 쓰레드를 시작하는 메소드의 이름은 무엇인가요?

  • start

7. 쓰레드에 선언되어 있는 sleep() 메소드의 역할은 무엇인가요?

  • 특정 시간동안 Thread가 정지

8. sleep() 메소드를 사용할 때 try-catch 로 감싸 주어야 하는 이유는 무엇인가요?

  • sleep() 메소드로 대기하고 있는 중에 interrupt가 될 수 있으므로, InterruptedException 이 발생할 수 있다.

9. 데몬(Daemon) 쓰레드와 일반 쓰레드의 차이는 무엇인가요?

  • 데몬 쓰레드는 만약 프로세스가 종료되는 상황이 되었을때 해당 쓰레드가 종료되지 않아도 다른 실행중인 일반 쓰레드가 없다면 해당 쓰레드는 중지된다.

10. synchronized 구문은 왜 써 주며, 어디에 사용해야 하나요?

  • synchronized 구문은 동시에 여러 쓰레드에서 하나의 값에 접근하려고 할 때 데이터의 정합성을 지키기 위해서 사용한다.
    그러므로, 여러 쓰레드에서 동시에 접근할 일이 있을 경우에만 써야한다. 그렇지 않으면 성능상 큰 문제가 발생할 수 있다.

11. synchronized 를 사용하는 두 가지 방법은 어떤 것 인가요?

  • syhchronized는 메소드 자체를 synchronized로 선언하는 방법과
  • 메소드 내에 필요한 부분만 synchronized로 선언하는 방법이

12. 쓰레드의 상태에는 어떤 것들이 있나요?

  • 쓰레드의 상태는 NEW, RUNNABLE, BLOCKED, WAITING, TIMED_WAITING, TERMINATED

13. 쓰레드에 선언되어 있는 join() 메소드의 용도는 무엇인가요?

  • join()메소드는 해당 쓰레드가 종료될 때까지 대기한다.

14. 쓰레드에 선언되어 있는 interrupt() 메소드의 용도는 무엇인가요?

  • interrupt() 메소드는 해당 쓰레드를 종료시킨다.

15. interrupt() 메소드를 호출하면 해당 쓰레드는 어떤 상태에 있을 때 interrupt() 메소드가 호출된 효과가 발생 되나요?

  • sleep(), join(), wait() 메소드가 호출되어 대기중인 상태에만 interrupt() 메소드가 처리된다


16. Object 클래스에 선언된 wait() 메소드의 용도는 무엇인가요?

  • wait() 메소드는 다른 쓰레드가 Object 객체에 대한 notify() 메소드나 notifyAll() 메소드를 호출할 때까지
    현재 쓰레드가 대기하고 있도록 한다.

    만약 매개변수로 시간을 지정하면 wait() 메소드와 동일하지만, 해당 시간까지만 대기한다.

17. Object 클래스에 선언된 notify() 메소드의 용도는 무엇인가요?

  • notify() 메소드는 wait() 메소드로 대기중인 쓰레드가 계속해서 작업을 하도록 깨우는 작업을 한다.

18. ThreadGroup 클래스에 선언된 enumerate() 메소드의 용도는 무엇인가요?

  • ThreadGroup의 enumerate() 메소드는 해당 쓰레드 그룹에 포함된 쓰레드나 쓰레드 그룹의 목록을 매개변수로 넘어온 배열에 담는다. 

26장 파일에 있는것을 읽고 쓰려면 아이오를 알아야죠

1. I/O는 각각 무엇의 약자인가요?

  • Input Output

2. java.io.File 클래스는 파일만 지정할 수 있나요?

  • X

3. OS 마다 다른 경로 구분자를 처리하기 위해서는 File 클래스의 어떤 상수를 사용해야 하나요?

  • File.separator

4. File 클래스에서 디렉터리를 만드는 mkdir()과 mkdirs() 메소드의 차이는 무엇인가요?

  • mkdir 메소드는 디렉터리를 하나만 만들고 mkdirs 메소드는 여러개의 하위 디렉터리를 만든다

5. File 클래스의 list() 메소드와 listFiles() 메소드의 차이는 무엇인가요?

  • list() 메소드의 경우 리턴값이 String 배열이며 listFiles()메소드의 경우는 리턴값이 File의 배열이다

6. FileFilter와 FilenameFilter의 차이는 무엇인가요?

  • FileFilter매개 변수로 넘어온 File객체가 조건에 맞는지 확인 FilenameFilter는 매개 변수로 넘어온 디렉터리에 있는 경로나 파일 이름이 조건에 맞는지 확인

7. InputStream 이라는 abstract 클래스는 어떤 작업을 하기 위해서 만들어 진 것인가요?

  • 스트림에서 바이트를 읽기 위해서

8. OutputStream 이라는 abstract 클래스는 어떤 작업을 하기 위해서 만들어 진 것인가요?

  • 스트림에서 바이트를 쓰기 위해서

9. Reader 라는 abstract 클래스는 어떤 작업을 하기 위해서 만들어 진 것인가요?

  • 문자열을 읽기 위해서

10. Writer 라는 abstract 클래스는 어떤 작업을 하기 위해서 만들어 진 것인가요?

  • 문자열을 쓰기 위해서

11. BufferedReader나 BufferedWriter를 사용하는 이유는 무엇인가요?

  • Writer 객체를 버퍼라는 공간을 사용해서 효율적으로 저장히기 위해

12. 파일을 읽고, 문자열을 처리하기 위해서 필요한 Scanner 클래스가 속해있는 패키지는 무엇인가요?

  • java.util

27장 Serializable과 NIO도 살펴 봅시다

1. java.io.Serializable을 import 하는 이유는 무엇인가요?

  • 생성한 객체를 파일로 저장할 일이 있을수도 있고, 저장한 객체를 읽을 일이 생길수도 있고 객체를 다른서버로 보낼 때도 있고, 다른서버로 보내 생성한 객체를 받을 일도 생길 수 있기 때문에 Serializable 인터페이스를 구현하기 하여 직렬화 역직렬화 하기위해

2. java.io.Serializable의 serialVersionUID 를 지정하는 이유는 무엇인가요?

  • 객체의 버전을 명시하여 객체가 같은지 다른지 확인할 수 있도록 하기 위해서

3. 자바에서 객체를 파일로 읽거나 쓸 때 사용하는 Stream 클래스 이름은 무엇인가요?

  • FileInputStream FileOutputStream

4. transient 예약어의 용도는 무엇인가요?

  • 직렬화 대상에서 제외

5. NIO가 생긴 이유는 무엇인가요?

  • 채널과 버퍼를 사용하여 스트림 기반 I/O의 속도를 개선하기 위해서

6. NIO에서 Channel의 용도는 무엇인가요?

  • 데이터를 중간에 처리

7. NIO에서 Buffer의 용도는 무엇인가요?

  • 데이터를 담는 역할

8. NIO에서 Buffer의 상태를 확인하기 위한 메소드들에는 어떤 것들이 있나요?

  • capacity() limit() position()

9. NIO에서 Buffer의 position을 변경하기 위한 메소드들에는 어떤 것들이 있나요?

  • flip() mark() reset() rewind() remaining() hasRemaining() clear()

 

28장 다른서버로 데이터 보내려면 어떻게 하면 되나요?

1. TCP 통신과 UDP 통신의 차이는 무엇인가요?

  • 상대방이 데이터를 받았는지 보장에 차이

2. 네트워크 통신시 포트 번호를 지정하는 이유는 무엇인가요?

  • 논리적인 접속장소를 구분하기 위해서

3. ServerSocket 클래스의 용도는 무엇인가요?

  • TCP 통신을 자바에서 수행하기 위한 클래스

4. ServerSocket 클래스의 accept() 메소드의 용도는 무엇인가요?

  • 새로운 소켓 연결을 기다리고, 연결이 되면 Socket 객체를 리턴

5. Socket 클래스의 용도는 무엇인가요?

  •  

6. DatagramSocket 클래스의 용도는 무엇인가요?

  • UDP 통신을 자바에서 수행하기 위한 클래스

7. DatagramPacket 클래스의 용도는 무엇인가요?

  •  

 

 

 

Comments