코딩 개념 잡는 자바 코딩 문제집
도서명:코딩 개념 잡는 자바 코딩 문제집
저자/출판사:앵겔,레너드/길벗
쪽수:804쪽
출판일:2022-09-30
ISBN:9791140701452
목차
1장 문자열과 수, 수학
__1.1 문제
__1.2 해법
____001 문자 개수 세기
____002 반복되지 않는 첫 번째 문자 찾기
____003 글자와 단어 뒤집기
____004 숫자만 포함하는 문자열인지 검사
____005 모음과 자음 세기
____006 문자 빈도수 세기
____007 문자열을 int, long, float, double로 변환
____008 문자열에서 여백 제거
____009 구분자로 여러 문자열 합치기
____010 모든 순열 생성
____011 문자열 회문 검사
____012 중복 문자 제거
____013 주어진 문자 제거
____014 빈도수가 가장 높은 문자 찾기
____015 문자열 배열을 길이 순으로 정렬
____016 문자열이 부분 문자열을 포함하는지 검사
____017 문자열 내 부분 문자열 빈도수 세기
____018 두 문자열이 애너그램인지 검사
____019 여러 줄 문자열(텍스트 블록) 선언
____020 같은 문자열 n번 이어 붙이기
____021 문자열 앞과 뒤 공백 제거
____022 가장 긴 공통 접두사 찾기
____023 들여쓰기 적용
____024 문자열 변환
____025 두 수의 최솟값과 최댓값 계산
____026 두 큰 int/long 수의 합과 연산 오버플로
____027 기수를 지정해 문자열을 부호 없는 수로 변환
____028 부호 없는 수로 변환
____029 부호 없는 두 수 비교
____030 부호 없는 값의 나눗셈과 나머지
____031 double/float가 유한 부동소수점 값인지 검사
____032 두 불 표현식에 논리 AND/OR/XOR 적용
____033 BigInteger를 원시 타입으로 변환
____034 long을 int로 변환
____035 나눗셈과 나머지의 버림 계산
____036 다음 부동소수점 값
____037 두 큰 int/long 수의 곱과 연산 오버플로
____038 단일 곱셈 누산기(Fused Multiply Add)
____039 컴팩트 수 포매팅
__1.3 요약
2장 객체와 불변성, switch 문
__2.1 문제
__2.2 해법
____040 함수형 스타일과 절차적 코드에서 %00; 참조 검사
____041 %00; 참조 검사와 맞춤형 %00;PointerException 던지기
____042 %00; 참조 검사와 명시된 예외(가령 IllegalArgumentException) 던지기
____043 %00; 참조 검사와 %00;이 아닌 기본 참조 반환
____044 인덱스가 0부터 길이까지 범위에 속하는지 검사
____045 부분 범위가 0부터 길이까지 범위에 속하는지 검사
____046 equals( )와 hashCode( )
____047 불변 객체 개요
____048 불변 문자열
____049 불변 클래스 작성
____050 불변 클래스로 가변 객체 전달
____051 빌더 패턴으로 불변 클래스 작성
____052 불변 객체 내 잘못된 데이터 유입 방지
____053 객체 복제
____054 toString( ) 오버라이딩
____055 switch 표현식
____056 다수의 case 레이블
____057 명령문 블록
__2.3 요약
3장 날짜와 시간 다루기
__3.1 문제
__3.2 해법
____058 문자열을 날짜와 시간으로 변환
____059 날짜와 시간 포매팅
____060 시간/날짜 없이 현재 날짜/시간 구하기
____061 LocalDate와 LocalTime으로 LocalDateTime 생성
____062 Instant 클래스로 기계 시간 구하기
____063 날짜 기반 값을 사용한 기간(period)과 시간 기반 값을 사용한 기간(duration) 정의
____064 날짜와 시간 단위 구하기
____065 날짜와 시간 더하기와 빼기
____066 UTC와 GMT로 모든 표준 시간대 구하기
____067 모든 표준 시간대로 로컬 날짜와 시간 구하기
____068 항공편 날짜와 시간 표시
____069 유닉스 타임스탬프를 날짜와 시간으로 변환
____070 어떤 달의 첫째 날과 마지막 날 찾기
____071 존 오프셋 정의/추출
____072 Date와 Temporal 간 변환
____073 날짜 범위 순회
____074 나이 계산
____075 어떤 날의 시작과 끝 시간
____076 두 날짜 간 차이
____077 체스 시계 구현
__3.3 요약
4장 타입 추론
__4.1 문제
__4.2 해법
____078 간단한 var 예제
____079 원시 타입에 var 사용하기
____080 var와 자동 형 변환으로 코드 유지 보수성 지속
____081 명시적 다운캐스트, 사실 var를 쓰지 않는 편이 낫다
____082 눈으로 봤을 때 호출하는 이름에 타입 정보가 부족하면 var를 쓰지 말자
____083 LVTI와 인터페이스 기반 프로그래밍 기법
____084 LVTI와 다이아몬드 연산자
____085 배열을 var에 할당
____086 LVTI로 복합 선언
____087 LVTI와 변수 범위
____088 LVTI와 삼항 연산자
____089 LVTI와 for 루프
____090 LVTI와 스트림
____091 LVTI로 연쇄적인 중첩/긴 표현식 나누기
____092 LVTI와 메서드 리턴과 인자 타입
____093 LVTI와 익명 클래스
____094 LVTI는 final과 effectively final에 사용할 수 있다
____095 LVTI와 람다
____096 LVTI와 %00; 초기자, 인스턴스 변수, catch 블록 변수
____097 LVTI와 제네릭 타입 T
____098 LVTI와 와일드카드, 공변성, 반변성
__4.3 요약
5장 배열, 컬렉션, 그리고 데이터 구조
__5.1 문제
__5.2 해법
____099 배열 정렬
____100 배열 내 원소 찾기
____101 두 배열의 동등 혹은 불일치 검사
____102 사전 순으로 두 배열 비교
____103 배열로 스트림 생성
____104 배열의 최솟값과 최댓값, 평균
____105 배열 뒤집기
____106 배열 채우기와 할당
____107 NGE(Next Greater Element)
____108 배열 크기 변경
____109 수정 불가/불변 컬렉션 생성
____110 기본값 매핑
____111 맵의 존재/부재 계산
____112 맵에서 삭제
____113 맵 항목 치환
____114 두 맵 비교
____115 맵 정렬
____116 해시맵 복사
____117 두 맵 병합
____118 프레디케이트와 일치하는 컬렉션 내 모든 원소 삭제
____119 컬렉션을 배열로 변환
____120 리스트로 컬렉션 필터링
____121 리스트 원소 치환
____122 스레드 안전 컬렉션, 스택, 큐
____123 너비 우선 탐색
____124 트라이
____125 튜플
____126 유니온 파인드
____127 펜윅 트리 또는 이진 인덱스 트리
____128 블룸 필터
__5.3 요약
6장 자바 입출력 경로, 파일, 버퍼, 스캐닝, 포매팅
__6.1 문제
__6.2 해법
____129 파일 경로 생성
____130 파일 경로 변환
____131 파일 경로 결합
____132 두 위치 간 경로 생성
____133 파일 경로 비교
____134 경로 탐색
____135 경로 감시
____136 파일 내용 스트리밍
____137 파일 트리에서 파일과 폴더 검색
____138 효율적으로 텍스트 파일 읽고 쓰기
____139 효율적으로 이진 파일 읽고 쓰기
____140 대용량 파일 검색
____141 JSON/CSV 파일 객체로 읽기
____142 임시 폴더와 파일 다루기
____143 파일 필터링
____144 두 파일 간 불일치 찾기
____145 순환 바이트 버퍼
____146 파일 토큰화
____147 출력을 포매팅해서 파일에 작성하기
____148 Scanner 다루기
__6.3 요약
7장 자바 리플렉션 클래스, 인터페이스, 생성자, 메서드, 필드
__7.1 문제
__7.2 해법
____149 패키지 검사
____150 클래스 검사
____151 리플렉션 생성자로 인스턴스 생성
____152 리시버 타입의 애너테이션 알아내기
____153 합성과 브릿지 구조체 알아내기
____154 다양한 수의 인수 검사
____155 디폴트 메서드 검사
____156 리플렉션으로 중첩 기반 접근 제어
____157 게터와 세터 리플렉션
____158 애너테이션 리플렉션
____159 인스턴스 메서드 호출
____160 static 메서드 알아내기
____161 메서드, 필드, 예외의 제네릭 타입 알아내기
____162 퍼블릭과 프라이빗 필드 알아내기
____163 배열 처리
____164 모듈 검사
____165 동적 프록시
__7.3 요약
8장 함수형 스타일 프로그래밍의 기초와 디자인 패턴
__8.1 문제
__8.2 해법
____166 함수형 인터페이스 작성하기
____167 람다 요약
____168 실행 어라운드 패턴 구현
____169 팩터리 패턴 구현
____170 전략 패턴 구현
____171 템플릿 메서드 패턴 구현
____172 옵저버 패턴 구현
____173 론 패턴 구현
____174 데코레이터 패턴 구현
____175 캐스케이드 빌더 패턴 구현
____176 커맨드 패턴 구현
__8.3 요약
9장 함수형 스타일 프로그래밍 더 깊이 파고들기
__9.1 문제
__9.2 해법
____177 고차 함수 테스트
____178 람다를 사용하는 메서드 테스트
____179 람다 디버깅
____180 스트림에서 0이 아닌 원소 필터링
____181 무한 스트림, takeWhile( ), dropWhile( )
____182 스트림 매핑
____183 스트림에서 원소 찾기
____184 스트림에서 같은 원소 찾기
____185 스트림의 합, 최대, 최소
____186 스트림 결과 모으기
____187 스트림 결과 조인
____188 컬렉터 요약
____189 그루핑
____190 파티셔닝
____191 컬렉터 필터링, 플래트닝, 매핑
____192 병합
____193 맞춤형 컬렉터 작성
____194 메서드 참조
____195 스트림 병렬 처리
____196 널 안전 스트림
____197 함수, 프레디케이트, 비교자 구성
____198 디폴트 메서드
__9.3 요약
10장 동시성 - 스레드 풀, 콜러블, 싱크로나이저
__10.1 문제
__10.2 해법
____199 스레드 생명 주기 상태
____200 객체 레벨 잠금 대 클래스 레벨 잠금
____201 자바 스레드 풀
____202 단일 스레드 풀
____203 고정된 수의 스레드 풀
____204 캐시와 스케줄 스레드 풀
____205 작업 가로채기 스레드 풀
____206 Callable과 Future
____207 다수의 Callable 작업 호출
____208 래치
____209 배리어
____210 익스체인저
____211 세마포어
____212 페이저
__10.3 요약
11장 동시성 더 깊이 파고들기
__11.1 문제
__11.2 해법
____213 인터럽터블 메서드
____214 포크/조인 프레임워크
____215 포크/조인 프레임워크와 compareAndSetForkJoinTaskTag( )
____216 CompletableFuture
____217 다수의 CompletableFuture 객체 조합
____218 바쁜 대기 최적화
____219 작업 취소
____220 ThreadLocal
____221 원자 변수
____222 ReentrantLock
____223 ReentrantReadWriteLock
____224 StampedLock
____225 데드락(식사하는 철학자)
__11.3 요약
12장 옵셔널
__12.1 문제
__12.2 해법
____226 Optional 초기화
____227 Optional.get( )과 누락 값
____228 미리 정해둔 기본값 반환
____229 존재하지 않는 기본값 반환
____230 NoSuchElementException 던지기
____231 Optional과 %00; 참조
____232 값이 존재하는 Optional 클래스 소비
____233 값이 존재하는 Optional 클래스 혹은 다른 클래스 반환
____234 orElseFoo( )로 람다 연결
____235 값을 구하기 위한 Optional 사용 금지
____236 필드에 Optional 사용 금지
____237 생성자 인수에 Optional 사용 금지
____238 세터 인수에 Optional 사용 금지
____239 메서드 인수에 Optional 사용 금지
____240 비어 있거나 널인 컬렉션 또는 배열 반환에 Optional 사용 금지
____241 컬렉션에 Optional 쓰지 않기
____242 of( )와 of%00;able( ) 혼동
____243 Optional
대 OptionalInt
____244 Optional 클래스 동등 어서션
____245 map( )과 flatMap( )으로 값 변형
____246 Optional.filter( )로 값 필터링
____247 Optional과 스트림 API 연결
____248 Optional과 식별에 민감한 연산
____249 Optional이 비었으면 boolean 반환
__12.3 요약
13장 HTTP 클라이언트와 WebSocket API
__13.1 문제
__13.2 해법
____250 HTTP/2
____251 비동기 GET 요청 트리거
____252 프록시 설정
____253 헤더 설정/가져오기
____254 HTTP 메서드 명시
____255 요청 본문 설정
____256 연결 인증 설정
____257 타임아웃 설정
____258 리다이렉트 정책 설정
____259 동기와 비동기 요청 전송
____260 쿠키 처리
____261 응답 정보 가져오기
____262 응답 본문 타입 처리
____263 JSON 가져오기와 업데이트, 저장
____264 압축
____265 폼 데이터 처리
____266 자원 다운로드
____267 다중 업로드
____268 HTTP/2 서버 푸시
____269 WebSocket
__13.3 요약