Java 기반 클라우드 융합 개발자 과정 - KH 정보교육원/5월

22. 05. 10 - 2차 시험, Api, 네트워크 소켓 복습

giggs 2022. 5. 13. 11:14

 

 

2차 TEST !

 

  • JAVA 네트워크 프로그래밍까지 진도 나가고 진행된 TEST!
  • 첫 번째 TEST 볼 때와는 사뭇 다른 느낌이었다.
  • 아직 어색했던 개념도 있었고 (쓰레드랑 소켓 부분 ㅎㅎ)
  • 그래도 강사님이 주사위를 잘 뽑으셔서 쉬운 문제로 걸렸다고 진행된 시험
  • .... 이.. 이게 쉬운 편이었나요? ㅋㅋ

 

 

 

시험 진행!

  • 2과목 서술형 / 문제 해결 시나리오 

 

 

 

 

 

 

점수는!!!!

 

 

 

 

 

GOOOOOD -- :D

 

 

 

 

사실... 100점이긴 하지만... 한 문제는 틀린 거였다. ㅎㅎ

어떤 메서드에 대해서 설명하라고 하는 문제가 있었는데

사실은 그 컬렉션이 아닌 다른 컬렉션에서 존재하는 메서드였다. 

메서드 내용을 맞게 작성해서인지 맞았다고 처리는 해주셨지만 찝찝 ㅎㅎ

 

 

그래도 다른 낚시? 문제들 잘 파헤치고 해결해서 

100점 // 100점!!!! ^-^

 

 

 

 

 


 

 

 

 

API 복습 시간

 

 

 

 

<String>

 

 

1. 문자열 하나 만들기

2. n번째 문자 출력하기 : char ch = str.charAt(3);

3. n번째 부터 m 번째 문자열 출력하기 : String / substring(2,5);

4. "hello" 라는 문자열과 같은지 확인하기 : boolean / equals(“...”);

5. "abc" 라는 문자열을 포함하고 있는지 확인하기 : contains(“abc”);

6. 해당 문자열이 가지는 특정 문자의 인덱스 값 알아내기 : int / indexOf(“”);

7. 특정 문자열을 구분자로 하여 문자 배열 얻어내기 : String[] / split(“ ”);

-> 공백을 기준으로 ( 띄어쓰기 한 칸) 문자열을 구분해라

 

 

 

 

+@ 7번

 

 

 

 

 

 


 

 

 

 

<List>

 

1. List 타입 객체 생성

2. 특정 타입만 담을 수 있도록 제한

 

 

 

 

3. 연예인 이름 n명 넣기

4. 모든 연예인 이름 출력해보기 (반복문으로)

5. 그중 3번째 연예인 이름 출력해보기

6. 마지막(뒤에서 첫 번째) 연예인 이름 출력해보기

7. 뒤에서 두 번째 연예인 이름 삭제하기

 

 

 

 

+@ 2번

  • 제네릭은 보통 객체를 관리할 때 많이 사용 -
  • <Person> -- Person 객체만 입력할 수 있도록 제한

 

 

  • >객체를 넣어놓은 list에서 객체를 꺼내왔는데 저렇게 출력되는 이유는? 
  • >객체는 기본적으로 toString() 메서드가 호출되기 때문에~!

 

 

 

 

 

 

 


 

 

 

 

<Set>

 

 

1. Set 타입 객체 생성

2. 정수만 들어가도록 제한하기

3. 10개의 정수 넣기

4. 모든 값 출력해보기 iterator 필요

  • set은 인덱스도 없고, get도 없다 - Iterator를 이용 - 중구난방으로 있는 데이터를 하나하나 꺼내서 한 줄로 세우고 / 하나씩 꺼내보고 작업할 수 있다.
  • 다 쏟아서 줄 세우기 - Iterator()
  • 요소 가지고 있는지 물어보기 – hasNext() - 있으면 true/없으면 false 나온다. - 안 가지고 있는데 꺼내려고 하면 오류 발생하니까 방지 차원!
  • 요소를 가지고 있다면 요소 꺼내오기 – if() + .next(); - 갔다 주면서 기존의 데이터 삭제해줌

 

5. 정수 n이 해당 객체에 포함되어 있는지 확인해보기

 

 

 

 

 

 

 

 

 


 

 

 

 

 

<Map>

 

 

1. Map 타입 객체 생성

2. Map의 key는 문자열, value는 정수로 제한하기

3. Map에 5개의 문자열 - 정수 쌍 데이터 넣기

 

 

 

 

 

 

4. 특정 keyvalue 꺼내서 출력해보기

5. 모든 키 값 확인해보기 (출력)

6. 모든 value 확인해보기 (출력)

7. 모든 key - value 쌍 확인해보기 (출력)

 

 

 

 

 

+@ 57번

  • Map.Entry가 더 정확한 표현이다.
  • Map이라는 독립적인 클래스가 존재하는 게 아니라
  • Map이라는 파일 안에 Entry 존재하고 있다. ( Map 인터페이스 안에 이너클래스(interface로 Entry 존재한다)
  • Entry는 Map이랑 밀접한 연관이 있는 거지 MapMap 이외에는 상관이 없다.
  • 그래서 Map안에다가 작성해 놓은 것 같다.~

 

 

 

 


 

 

 

 

소켓 복습

 

MY Question )

여러 개의 클라이언트 소켓들이

서버 소켓에 같은 ip주소와 포트번호로 연결 요청하면

포트번호 같은 걸로 요청했어도 연결 요청한 클라이언트 소켓 개수에 맞춰서

각각 하나씩 만들어주는 건가요?

  • -> 네 넵 같아도 클라이언트 개수만큼 소켓이 생깁니다.
  • accept() 메서드 확인

 

 

 

 

 

 

  • accept() 메서드 안에 살펴보면
  • accept() 실행될 때마다 ( == 연결될 때마다 ) new Socket() 해주는 작업이 있다!
  • 소켓이 하나하나 다 생기겠구나! check

 

 

 

 

 


 

 

 

 



review


Test는 언제나 긴장되는 것 '^'
100점 / 100점 맞아서 기분은 좋지만!
저번 시험처럼 자신 있는 상태가 아니었다.
자신 없었던 부분은 복습하고
더 알아보는 시간을 가지도록 하자!

API 복습하며 메서드 사용해보는 시간을 가졌는데
Iterator를 설명해주실 때
일단 다 꺼내서 줄 세우는 거라는 예시가
너무 마음에 들었다.ㅎㅎ

이론적으로만 Index가 없는 Map유형 애들은
이터레이터를 이용해서 돌아다닌다고만 이해하고 있었는데
예시를 통해 이해하기가 더 수월했다. 

컬렉션 애들 메서드 사용할 때 중간중간 애매했던 애들도
다시 사용해보며 Check 해보자!