[epub3.0]코딩개념 잡는 자바 코딩 문제집
2022년 10월 06일 출간
- eBook 상품 정보
- 파일 정보 ePUB (27.91MB)
- ISBN 9791140701803
- 지원기기 교보eBook App, PC e서재, 리더기, 웹뷰어
-
교보eBook App
듣기(TTS) 가능
TTS 란?텍스트를 음성으로 읽어주는 기술입니다.
- 전자책의 편집 상태에 따라 본문의 흐름과 다르게 텍스트를 읽을 수 있습니다.
- 이미지 형태로 제작된 전자책 (예 : ZIP 파일)은 TTS 기능을 지원하지 않습니다.
쿠폰적용가 34,560원
10% 할인 | 5%P 적립이 상품은 배송되지 않는 디지털 상품이며,
교보eBook앱이나 웹뷰어에서 바로 이용가능합니다.
카드&결제 혜택
- 5만원 이상 구매 시 추가 2,000P
- 3만원 이상 구매 시, 등급별 2~4% 추가 최대 416P
- 리뷰 작성 시, e교환권 추가 최대 200원
작품소개
이 상품이 속한 분야
모던 자바의 주요 개념을 확실하게 이해한다
현대 프로그래밍 언어의 트렌드를 반영하면서 자바에는 타입 추론, 함수형, 옵셔널, 널 안전 스트림, 디폴트 메서드, 중첩 기반 접근 제어, 퓨처, 개선된 동시성 기능 등이 추가되었다. 300개 이상의 응용프로그램과 1,000개 이상의 예제를 통해 주요 개념을 확실하게 이해하자.
빠르게 발전한 자바 문법과 라이브러리를 익힌다
자바 언어가 빠르게 발전하면서 자바 문법과 라이브러리에 많은 변화가 생겼다. 이러한 변화는 개발 환경의 변화와 그에 따른 개발자들의 요구를 수용하기 위한 것이었지만, 학습 곡선을 빠르게 높였다. 즉, 학습하기 어려워졌다. 이러한 변화는 자바 입문서로는 제대로 배우기 어렵다. 문법 이후 막막한 학생, 빠르게 발전한 자바의 발전을 따라 잡고 싶은 개발자에게 필요한 내용을 담았다.
실무에서 만나는 문제를 해결하면서 레벨업한다
실무에서 공통으로 접하게 되는 분야를 문제로 출제했다. 문자열, 숫자, 배열, 컬렉션, 데이터 구조, 날짜와 시간, 불변성, 타입 추론, 옵셔널, 자바 I/O, 비동기 처리, 동시성, 자바 리플렉션, 람다, 스트림, 컬렉터, 함수형 프로그래밍, 디자인 패턴, HTTP Client API 등에 대한 문제를 수록했다. 문제마다 구글 검색으로 해결하려 한다면 코딩 속도가 너무 느리다. <자바 코딩 문제집>으로 많은 문제를 접하고 해법을 익혀두자. 이미 접해본 문제와 해법이 많을수록 문제 해결력이 생기고 코딩 속도도 빨라진다.
__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 요약
작가정보
저자(글) 앵겔 레너드
앵겔 레너드(Anghel Leonard)는 자바 생태계에서 20년 넘게 경력을 쌓은 수석 기술 전략가이다. 강력한 아키텍처와 클린 코드, 고성능을 갖춘 자바 분산 애플리케이션의 설계와 개발이 주 업무다. 코칭과 멘토링, 기술자 리더십에도 열성적이다. 자바 기술과 관련해 여러 가지 책과 영상, 그리고 다수의 글을 남겼다.
번역 심지현
이화여대 컴퓨터공학과를 졸업하고, KAIST 대학원 전산과에서 데이터베이스 전공으로 석사 학위를 취득했다. 데이터베이스 외에 온톨로지(Ontology), 개인화 검색 등을 연구했으며 졸업 후 네이버에서 검색 서버 설계 및 개발 실무 경험을 쌓다가 현재는 검색 연구실에서 검색 모델링과 추천 시스템 관련 연구를 진행 중이다.
이 상품의 총서
Klover리뷰 (0)
- - e교환권은 적립일로부터 180일 동안 사용 가능합니다.
- - 리워드는 1,000원 이상 eBook, 오디오북, 동영상에 한해 다운로드 완료 후 리뷰 작성 시 익일 제공됩니다. (5,000원 이상 상품으로 변경 예정, 2024년 9월 30일부터 적용)
- - 리워드는 한 상품에 최초 1회만 제공됩니다.
- - sam 이용권 구매 상품 / 선물받은 eBook은 리워드 대상에서 제외됩니다.
- 도서나 타인에 대해 근거 없이 비방을 하거나 타인의 명예를 훼손할 수 있는 리뷰
- 도서와 무관한 내용의 리뷰
- 인신공격이나 욕설, 비속어, 혐오 발언이 개재된 리뷰
- 의성어나 의태어 등 내용의 의미가 없는 리뷰
구매 후 리뷰 작성 시, e교환권 100원 적립
문장수집
- 구매 후 90일 이내에 문장 수집 등록 시 e교환권 100원을 적립해 드립니다.
- e교환권은 적립일로부터 180일 동안 사용 가능합니다.
- 리워드는 1,000원 이상 eBook에 한해 다운로드 완료 후 문장수집 등록 시 제공됩니다. (5,000원 이상 eBook으로 변경 예정, 2024년 9월 30일부터 적용)
- 리워드는 한 상품에 최초 1회만 제공됩니다.
- sam 이용권 구매 상품 / 선물받은 eBook / 오디오북·동영상 상품/주문취소/환불 시 리워드 대상에서 제외됩니다.
구매 후 문장수집 작성 시, e교환권 100원 적립
신규가입 혜택 지급이 완료 되었습니다.
바로 사용 가능한 교보e캐시 1,000원 (유효기간 7일)
지금 바로 교보eBook의 다양한 콘텐츠를 이용해 보세요!
- 구매 후 90일 이내 작성 시, e교환권 100원 (최초1회)
- 리워드 제외 상품 : 마이 > 라이브러리 > Klover리뷰 > 리워드 안내 참고
- 콘텐츠 다운로드 또는 바로보기 완료 후 리뷰 작성 시 익일 제공
가장 와 닿는 하나의 키워드를 선택해주세요.
총 5MB 이하로 jpg,jpeg,png 파일만 업로드 가능합니다.
신고 사유를 선택해주세요.
신고 내용은 이용약관 및 정책에 의해 처리됩니다.
허위 신고일 경우, 신고자의 서비스 활동이 제한될 수
있으니 유의하시어 신중하게 신고해주세요.
이 글을 작성한 작성자의 모든 글은 블라인드 처리 됩니다.
구매 후 90일 이내 작성 시, e교환권 100원 적립
eBook 문장수집은 웹에서 직접 타이핑 가능하나, 모바일 앱에서 도서를 열람하여 문장을 드래그하시면 직접 타이핑 하실 필요 없이 보다 편하게 남길 수 있습니다.
차감하실 sam이용권을 선택하세요.
차감하실 sam이용권을 선택하세요.
선물하실 sam이용권을 선택하세요.
-
보유 권수 / 선물할 권수0권 / 1권
-
받는사람 이름받는사람 휴대전화
- 구매한 이용권의 대한 잔여권수를 선물할 수 있습니다.
- 열람권은 1인당 1권씩 선물 가능합니다.
- 선물한 열람권이 ‘미등록’ 상태일 경우에만 ‘열람권 선물내역’화면에서 선물취소 가능합니다.
- 선물한 열람권의 등록유효기간은 14일 입니다.
(상대방이 기한내에 등록하지 않을 경우 소멸됩니다.) - 무제한 이용권일 경우 열람권 선물이 불가합니다.
첫 구매 시 교보e캐시 지급해 드립니다.
- 첫 구매 후 3일 이내 다운로드 시 익일 자동 지급
- 한 ID당 최초 1회 지급 / sam 이용권 제외
- 구글바이액션을 통해 교보eBook 구매 이력이 없는 회원 대상
- 교보e캐시 1,000원 지급 (유효기간 지급일로부터 7일)