1Z0-829 — Oracle Java SE 17 Developer Quick Review

Quick Review for Oracle Java SE 17 Developer (1Z0-829) candidates: high-yield Java SE 17 concepts, common traps, and practice focus.

Quick Review purpose

This Quick Review is for candidates preparing for Oracle’s Oracle Java SE 17 Developer (1Z0-829) exam. Use it to refresh the concepts most likely to matter before moving into topic drills, mock exams, and detailed explanations in an IT Mastery question bank.

This page is IT Mastery review support. It is not affiliated with Oracle and does not replace Oracle’s official exam information.

How to use this review

  1. Scan the tables first. Mark anything you cannot explain without looking it up.
  2. Run topic drills immediately after each weak area. Java exam misses often come from small compile-time or runtime details.
  3. Practice with code mentally and in an IDE. The real challenge is usually not knowing an API exists; it is predicting exact behavior.
  4. Use detailed explanations to fix patterns. If you miss several questions on streams, generics, modules, or date/time, slow down and rebuild the rule set.

High-yield exam mindset

The Oracle Java SE 17 Developer (1Z0-829) exam rewards precision. Expect questions that test:

SkillWhat to watch
Compilation judgmentAccess rules, inheritance, generics, var, lambdas, modules, checked exceptions
Runtime behaviorInitialization order, polymorphism, exceptions, stream laziness, collection mutation
API fluencyString, StringBuilder, collections, streams, dates, NIO.2, JDBC, localization
Java 17 language featuresRecords, sealed classes, pattern matching for instanceof, switch expressions, text blocks
Edge casesNumeric promotion, overload resolution, wildcard bounds, resource closing order, immutability

A common mistake is reading code as if it were “normal application code.” Exam code is often designed to expose one exact rule.

Java language fundamentals

Source files, packages, imports, and main

TopicRule to rememberCommon trap
One public top-level typePublic top-level type name must match the file nameNon-public top-level classes can share a file
Package declarationIf present, it comes before imports and type declarationsComments can appear before it; imports cannot
Importsimport package.Type; or import package.*;Wildcard import does not import subpackages
Static importsImport static members by name or wildcardAmbiguous static imports can cause compile errors
main methodCommon form: public static void main(String[] args)String... args is equivalent; wrong return type is not an entry point
java.langImported automaticallyOther packages are not

Identifiers, var, and scope

FeatureValid useInvalid or risky use
var local variable inferenceLocal variables with an initializerFields, method parameters, return types
var initializervar n = 10;var x = null; because type cannot be inferred
Lambda parametersCan use var for all lambda parametersCannot mix var and explicit/implicit parameter styles
ScopeLocal variables live within their blockShadowing can hide fields or outer variables

Remember: var does not make Java dynamically typed. The type is inferred at compile time and then fixed.

Primitive types and numeric promotion

AreaRule
Integer literalsDefault type is int unless suffixed or context requires otherwise
Floating literalsDefault type is double; use f or F for float
byte, short, char arithmeticPromoted to int in most arithmetic expressions
Compound assignmentIncludes an implicit cast, so short s = 1; s += 1; can compile where s = s + 1; may not
DivisionInteger division truncates toward zero
OverflowInteger overflow wraps; it does not throw an exception
BooleanNot numeric; cannot be used as 0 or 1

High-yield example: char + char produces an int, not a char.

Equality and object identity

ExpressionMeaningTrap
a == b for primitivesNumeric or boolean value comparisonNumeric promotion may occur
a == b for referencesSame object referenceNot logical equality
a.equals(b)Type-specific equality if overriddenMay throw NullPointerException if a is null
Objects.equals(a, b)Null-safe equalityUseful for exam reasoning
RecordsGenerated equals compares record componentsComponent equality still depends on component types
StringsString literals may be internedDo not assume new String("x") == "x"

Text, strings, and formatting

String, StringBuilder, and text blocks

Type / featureKey propertiesExam trap
StringImmutableMethods return a new String; original unchanged
StringBuilderMutable, not synchronizedMethods usually mutate and return same builder
StringBufferMutable, synchronizedLess common in modern code
Text blocksMultiline string literals using triple quotesIncidental indentation and trailing newline behavior can matter
String comparisonUse .equals for content== checks reference identity

Common String methods to know: charAt, indexOf, substring, replace, trim, strip, isBlank, startsWith, endsWith, contains, split, join, format.

Important distinction:

MethodFocus
trim()Removes characters with code points less than or equal to U+0020
strip()Uses Unicode whitespace awareness
isEmpty()Length is zero
isBlank()Empty or only whitespace

Formatting numbers and text

Know the broad roles:

APIUse
String.formatFormat text using format specifiers
NumberFormatLocale-sensitive number, currency, and percent formatting
DecimalFormatCustom numeric patterns
DateTimeFormatterDate/time parsing and formatting

Pattern letters are case-sensitive. For date/time formatting, M and m are not interchangeable: month versus minute is a frequent trap.

Control flow

if, loops, labels, break, and continue

ConstructReview point
if / elseelse binds to the nearest unmatched if
whileCondition checked before body
do whileBody executes at least once
Basic forInit, condition, update sections are optional
Enhanced forIterates arrays or Iterable objects
LabelsCan label loops and blocks, but most useful with nested loops
breakExits loop or switch; labeled break exits labeled statement
continueSkips to next loop iteration; labeled continue targets a loop

Enhanced for gives you the element value/reference, not an index. Reassigning the loop variable does not replace array or collection elements.

Switch statements and switch expressions

FeatureSwitch statementSwitch expression
PurposeControl flowProduces a value
Fall-throughPossible with colon labelsArrow labels do not fall through
Value requiredNoYes, every path must produce a value or throw
yieldNot used in classic statement styleUsed to return a value from block cases
ExhaustivenessLess strictMore strict

Common switch-compatible types include integral types and wrappers, String, enums, and certain other supported forms. Do not treat boolean, long, float, or double as normal switch selector types.

High-yield traps:

  • case labels must be compatible constants or valid case forms.
  • default is optional in some statements but often needed in expressions.
  • Arrow case syntax and colon case syntax behave differently.
  • Missing break in colon-style statements can cause fall-through.

Object-oriented programming

Initialization order

For a new object, reason in this order:

  1. Load and initialize needed classes.
  2. Initialize superclass static fields and static blocks.
  3. Initialize subclass static fields and static blocks.
  4. Allocate object memory with default values.
  5. Run superclass instance fields, instance initializer blocks, and constructor.
  6. Run subclass instance fields, instance initializer blocks, and constructor.

Within a class, fields and initializer blocks execute in textual order.

High-yield trap: overridden methods called from constructors use dynamic dispatch, so subclass methods may run before subclass fields are fully initialized.

Access modifiers

ModifierSame classSame packageSubclass in other packageOther package
privateYesNoNoNo
package-privateYesYesNoNo
protectedYesYesYes, through inheritance rulesNo general access
publicYesYesYesYes

protected is commonly misunderstood. A subclass in another package does not get unrestricted access to every protected member on every superclass reference.

Overloading, overriding, and hiding

ConceptDecided whenKey rule
OverloadingCompile timeSame method name, different parameter list
OverridingRuntime dispatchInstance method in subclass replaces superclass behavior
Static method hidingCompile time reference typeStatic methods are not polymorphic
Field hidingCompile time reference typeFields are not polymorphic
Covariant returnOverride may return subtypeMust still satisfy method contract
Checked exceptionsOverride cannot throw broader checked exceptionsRuntime exceptions are not restricted the same way

Overload resolution often chooses the most specific applicable method. Widening, boxing, varargs, and inheritance can interact; practice these with original practice questions until the selection order feels automatic.

Abstract classes, interfaces, enums, records, and sealed types

TypeHigh-yield facts
Abstract classCan have constructors, fields, concrete methods, abstract methods
InterfaceMethods are commonly public abstract; can also have default, static, and private methods
EnumConstants come first; constructors are implicitly private; can have fields and methods
RecordConcise immutable data carrier; final; generated constructor, accessors, equals, hashCode, toString
Sealed class/interfaceRestricts direct permitted subclasses/implementors
Non-sealed subtypeReopens inheritance below a sealed hierarchy
Final subtypeEnds inheritance branch

Records:

  • Components become private final fields plus public accessor methods.
  • Accessor names are component names, not JavaBean getX names by default.
  • A compact constructor cannot assign directly to component fields before the implicit assignment.
  • Records can implement interfaces.
  • Records cannot declare additional instance fields beyond record components, but they can declare static fields.

Sealed types:

  • Direct subclasses must be permitted.
  • Direct subclasses must declare final, sealed, or non-sealed.
  • Sealed hierarchies are a common source of compile-time questions.

Pattern matching for instanceof

Pattern matching reduces casting:

  • Traditional idea: check type, then cast.
  • Java 17 style: if (obj instanceof String s) { ... }.

Review points:

RuleTrap
Pattern variable is available only where definitely matchedNot visible outside invalid scope
Null does not match an instanceof patternnull instanceof Type is false
Pattern variable has the target typeNo separate cast needed

Exceptions

Checked, unchecked, and errors

CategoryExamplesCompile-time handling required?
Checked exceptionsIOException, SQLExceptionYes: catch or declare
Runtime exceptionsNullPointerException, IllegalArgumentExceptionNo
ErrorsOutOfMemoryError, StackOverflowErrorNo; usually not handled

High-yield rules:

  • Catch blocks must be ordered from more specific to more general.
  • A catch block that can never be reached causes a compile error.
  • Multi-catch alternatives cannot be related by subclassing.
  • The exception variable in a multi-catch is effectively final.
  • A finally block usually runs whether or not an exception is thrown.
  • A finally block can suppress or replace an earlier return/throw if it completes abruptly.

Try-with-resources

RuleWhy it matters
Resource must implement AutoCloseable or CloseableOtherwise it cannot be used as a resource
Resources close in reverse declaration orderFrequently tested
Close exceptions can be suppressedPrimary exception remains primary
Resource variables are effectively finalExisting effectively final variables can be used

Do not forget that close() itself may throw an exception depending on the resource type.

Arrays, collections, and generics

Arrays

TopicRule
Lengtharray.length field, not method
IndexingZero-based
Default valuesNumeric zero, false, '\u0000', null references
CovarianceString[] is an Object[]
Runtime store checksWrong subtype assignment can throw ArrayStoreException
Multidimensional arraysArrays of arrays; inner lengths may differ

Array covariance is unlike generic invariance. String[] can be assigned to Object[], but List<String> cannot be assigned to List<Object>.

Collections quick map

Interface / classOrdered?Duplicates?High-yield note
ArrayListIndex orderYesFast random access
LinkedListIndex/insertion orderYesAlso implements Deque
HashSetNo guaranteed orderNoDepends on hashCode/equals
LinkedHashSetInsertion orderNoPredictable iteration order
TreeSetSortedNoRequires comparable elements or comparator
HashMapNo guaranteed orderKeys uniqueKey equality uses hashCode/equals
LinkedHashMapInsertion/access order optionsKeys uniquePredictable iteration order
TreeMapSorted keysKeys uniqueRequires comparable keys or comparator
ArrayDequeDeque orderYesOften preferred for stack/queue behavior
PriorityQueuePriority order for removalYesIteration order is not sorted order

Mutability and factory methods

Creation styleBehavior
List.of(...), Set.of(...), Map.of(...)Unmodifiable; reject nulls
Arrays.asList(array)Fixed-size list backed by the array
Collections.unmodifiableList(list)Unmodifiable view backed by original list
new ArrayList<>(list)Independent mutable copy

High-yield distinction: unmodifiable is not the same as immutable if the underlying data can still change through another reference.

Generics and wildcards

FormMeaningSafe mental model
List<T>Exact type parameterInvariant
List<?>Unknown typeRead as Object; cannot add specific elements except null
List<? extends Number>Some subtype of NumberProducer: read Number, do not add numbers
List<? super Integer>Some supertype of IntegerConsumer: can add Integer; reads as Object
Raw typeGeneric type without type argumentAllows unsafe operations and warnings

Use PECS: Producer Extends, Consumer Super.

Common traps:

  • Generic type parameters are erased at runtime.
  • You cannot create new T() directly.
  • You cannot create a normal array of a parameterized type such as new List<String>[10].
  • List<Integer> is not a subtype of List<Number>.

Sorting and comparison

APIPurpose
Comparable<T>Natural ordering using compareTo
Comparator<T>External ordering strategy
Comparator.comparingBuild comparator from key extractor
thenComparingTie-breaker
reversedReverse order
Collections.sort / List.sortSort lists
Arrays.sortSort arrays
binarySearchRequires sorted input according to same ordering

If input is not sorted correctly, binary search results are not reliable.

Lambdas, functional interfaces, and streams

Functional interfaces

A functional interface has exactly one abstract method, though it may also have default, static, and private methods.

InterfaceAbstract method ideaExample use
Predicate<T>T -> booleanFiltering
Consumer<T>T -> voidPerforming side effects
Supplier<T>() -> TCreating/providing values
Function<T,R>T -> RMapping
UnaryOperator<T>T -> TSame-type transform
BinaryOperator<T>(T,T) -> TCombining
BiFunction<T,U,R>(T,U) -> RTwo-input mapping

Lambda traps:

  • Captured local variables must be final or effectively final.
  • Parameter types can be inferred, but syntax must be consistent.
  • A lambda body with braces needs explicit return for non-void results.
  • Method references must match the target functional interface signature.

Stream pipeline rules

StageExamplesKey point
SourceCollection, array, file lines, generated streamProvides elements
Intermediate operationsfilter, map, flatMap, sorted, distinct, limit, skip, peekLazy; return another stream
Terminal operationscollect, reduce, count, forEach, anyMatch, findFirstTrigger processing and close pipeline
ReuseNot allowed after terminal operationCauses IllegalStateException

Streams do not modify the source unless the operation itself causes side effects. Prefer side-effect-free lambdas, especially with parallel streams.

Intermediate operations

OperationPurposeTrap
filterKeep matching elementsPredicate returns boolean
mapOne element to one elementCan change element type
flatMapOne element to stream of elementsFlattens nested streams
distinctRemove duplicatesUses equality
sortedSort natural or comparator orderMay need comparable elements
peekObserve elementsLazy; mainly debugging
limitTruncate streamImportant for infinite streams
skipDiscard first n elementsOrder matters
takeWhileTake while predicate remains trueMost useful on ordered streams
dropWhileDrop while predicate remains trueBehavior differs for unordered streams

Terminal operations

OperationReturnsReview point
countlongCounts elements
min / maxOptional<T>Need comparator
findFirstOptional<T>Encounter-order sensitive
findAnyOptional<T>Useful in parallel pipelines
anyMatchbooleanShort-circuiting
allMatchbooleanTrue for empty stream
noneMatchbooleanTrue for empty stream
forEachvoidOrder not guaranteed in parallel
forEachOrderedvoidPreserves encounter order where applicable
reduceValue or OptionalIdentity/accumulator/combiner rules matter
collectCollection, map, string, summaryUses collectors or custom collector

Collectors

CollectorUse
toList, toSet, toMapCollect elements into containers
joiningCombine strings
groupingByMap keys to grouped values
partitioningBySplit into true/false groups
mappingDownstream transformation
countingCount elements downstream
summingInt, averagingDouble, etc.Numeric aggregation
summarizingInt, etc.Count, sum, min, max, average
reducingDownstream reduction

toMap is a common trap: duplicate keys require a merge function unless the data guarantees uniqueness.

Primitive streams and Optional

TypePurpose
IntStream, LongStream, DoubleStreamAvoid boxing for primitive pipelines
Optional<T>Container for possibly absent reference value
OptionalInt, OptionalLong, OptionalDoublePrimitive optional variants

Know common Optional methods: isPresent, isEmpty, get, orElse, orElseGet, orElseThrow, ifPresent, map, flatMap, filter.

High-yield distinction:

MethodBehavior
orElse(value)Argument is evaluated before the call
orElseGet(supplier)Supplier runs only when optional is empty

Date, time, and localization

Java date/time API

Most java.time types are immutable.

TypeRepresents
LocalDateDate without time zone
LocalTimeTime without date or zone
LocalDateTimeDate and time without zone
ZonedDateTimeDate and time with time zone
OffsetDateTimeDate and time with offset
InstantMachine timestamp
PeriodDate-based amount: years, months, days
DurationTime-based amount: seconds, nanoseconds

Common traps:

  • Period is for dates; Duration is for time-based amounts.
  • Date/time objects are immutable; date.plusDays(1) returns a new object.
  • Formatting patterns are case-sensitive.
  • Some operations may adjust invalid dates, such as month-end calculations.
  • Time zones and daylight saving transitions can affect ZonedDateTime.

Localization

APIUse
LocaleLanguage, country/region, variant information
ResourceBundleLocale-specific text/resources
NumberFormatLocale-sensitive numbers, currency, percentages
DateTimeFormatterDate/time formatting with locale support
MessageFormatParameterized localized messages

Resource bundle lookup can fall back through less-specific locales. Practice questions often test which bundle is selected or whether a key is found.

Java I/O and NIO.2

Path and Files

APIPurposeTrap
PathRepresents a pathPath object may refer to nonexistent file
Paths.get / Path.ofCreate pathsDoes not require file to exist
normalizeRemove redundant path elementsDoes not access filesystem
toAbsolutePathConvert to absolute pathDoes not necessarily verify existence
toRealPathResolve real filesystem pathAccesses filesystem and can throw
resolveCombine pathsAbsolute right-hand path may override
relativizePath from one path to anotherUsually requires compatible path types
Files.existsExistence checkCan be affected by permissions
Files.copy / move / deleteFile operationsOptions change behavior
Files.walk / find / listStream pathsClose streams

Byte streams, character streams, and buffering

CategoryExamplesUse
Byte streamsInputStream, OutputStreamBinary data
Character streamsReader, WriterText data
Buffered streams/readersBufferedInputStream, BufferedReaderEfficiency
Object streamsObjectInputStream, ObjectOutputStreamSerialization

Remember to close I/O resources. Try-with-resources is the standard exam-safe pattern.

Serialization review

RuleWhy it matters
Class must implement SerializableMarker interface enables standard serialization
transient fields are not serialized normallyThey receive default values on deserialization
Static fields are not part of object stateClass-level, not instance state
serialVersionUIDVersion compatibility identifier
ConstructorsDeserialization does not call the serializable class’s normal constructor

Serialization questions often combine inheritance, transient, static fields, and default values.

Concurrency

Threads, tasks, and executors

ConceptReview point
ThreadRepresents an execution thread
RunnableTask with no return value and no checked exception from run
Callable<V>Task returning a value and allowed to throw checked exceptions
ExecutorServiceManages task execution
executeSubmits Runnable, no result
submitReturns Future
Future.getBlocks until result or exception
shutdownStops accepting new tasks; existing tasks continue
shutdownNowAttempts to stop running tasks and returns pending tasks

High-yield trap: creating a Thread object does not start execution. Calling run() directly is just a normal method call; start() starts a new thread.

Synchronization and shared state

ToolPurposeTrap
synchronized instance method/blockLock on an object instanceDifferent objects mean different locks
synchronized staticLock on class objectSeparate from instance lock
volatileVisibility guaranteeDoes not make compound actions atomic
Atomic classesAtomic updates like incrementKnow common classes such as AtomicInteger
Concurrent collectionsSafer concurrent accessIteration semantics may differ from fail-fast collections
LocksExplicit lock/unlock controlMust release in finally when used manually

Common concurrency errors:

  • Race condition: result depends on timing.
  • Deadlock: threads wait forever for each other’s locks.
  • Starvation: a thread cannot get needed resources.
  • Livelock: threads keep reacting but make no progress.
  • Unsafe publication: other threads see stale or partially initialized state.

Parallel streams

Parallel streams can improve throughput for suitable workloads, but exam questions often focus on correctness:

  • Avoid shared mutable state.
  • Do not assume forEach preserves order.
  • Use associative, stateless operations for reductions.
  • findAny may differ from findFirst.
  • Side effects become harder to reason about.

JDBC

Core JDBC flow

StepAPI
Get connectionDriverManager or DataSource
Create statementStatement, PreparedStatement, or CallableStatement
Bind parametersPreparedStatement setters use 1-based parameter indexes
ExecuteexecuteQuery, executeUpdate, or execute
Read resultsResultSet cursor starts before first row; call next()
Clean upTry-with-resources
Manage transactionsetAutoCommit, commit, rollback

Statement selection

TypeUse
StatementSimple SQL without parameters
PreparedStatementParameterized SQL; helps avoid SQL injection
CallableStatementStored procedures

Execution method traps:

MethodBest fit
executeQuerySQL that returns a ResultSet
executeUpdateINSERT, UPDATE, DELETE, DDL; returns update count
executeGeneral method; returns boolean indicating result type

Always distinguish SQL parameter indexes from Java array indexes: JDBC parameters are commonly 1-based.

Modules and deployment

Java Platform Module System essentials

DirectiveMeaning
requiresModule depends on another module
requires transitiveDependency is exposed to modules that require this module
requires staticNeeded at compile time but optional at runtime
exportsMakes package public to other modules at compile time and runtime
exports ... toQualified export to specific modules
opensAllows deep reflection at runtime
opens ... toQualified reflective access
usesDeclares service consumption
provides ... withDeclares service provider implementation

Module review points:

  • java.base is required implicitly.
  • module-info.java declares module dependencies and exposed packages.
  • Packages are the unit of export, not individual classes.
  • Public class does not mean accessible outside the module unless its package is exported.
  • Reflection-heavy frameworks may require opens, not merely exports.
  • Named modules, unnamed modules, and automatic modules behave differently.
  • Split packages across modules can create problems.

JARs and command-line awareness

Know the purpose, not just syntax:

Tool / conceptPurpose
javacCompile source
javaRun application
jarPackage classes/resources
Module pathLocate modules
ClasspathLocate non-modular classes/resources
jdepsAnalyze dependencies
jlinkCreate custom runtime images

Practice command-line questions carefully; one misplaced module name or path option can change the answer.

Annotations

Built-in and meta-annotations

AnnotationPurpose
@OverrideCompiler verifies method override
@FunctionalInterfaceCompiler verifies single abstract method
@DeprecatedMarks obsolete API
@SuppressWarningsSuppresses selected compiler warnings
@SafeVarargsSuppresses heap pollution warnings for safe varargs use
@RetentionControls how long annotation is retained
@TargetControls where annotation can be used
@RepeatableAllows repeated annotation use
@InheritedAllows class annotation inheritance behavior
@DocumentedIncludes annotation in generated documentation

Annotation element rules:

  • Element types are restricted to primitives, String, Class, enums, annotations, and arrays of those types.
  • Elements can have default values.
  • If the only required element is named value, shorthand syntax can be used.
  • Retention matters: reflection requires runtime retention.

Security and robustness mindset

The exam may combine API knowledge with safe coding judgment. Keep these habits in mind:

RiskSafer approach
SQL injectionUse PreparedStatement parameters
Exposed mutable internalsDefensive copies or immutable views
Resource leaksTry-with-resources
Unsafe deserializationValidate and minimize serialized surface
Shared mutable stateSynchronization, immutability, atomic classes, concurrent collections
Sensitive data in logsAvoid unnecessary exposure
Path traversalValidate and normalize paths carefully

For question-bank practice, treat “secure” answers as those that reduce trust in external input, avoid unnecessary mutability, and close resources predictably.

Common compile-time traps

Code patternLikely issue
Using var without initializerCannot infer type
Assigning int expression to shortNumeric promotion
Catching superclass exception before subclassUnreachable catch
Lambda captures modified local variableNot effectively final
Adding to List<? extends Number>Unsafe; compile error except null
Overriding with broader checked exceptionCompile error
Calling private method as if overriddenPrivate methods are not overridden
Accessing non-exported module packageNot accessible outside module
Mixing lambda parameter stylesCompile error
Creating generic arrayUsually illegal
Missing return in switch expression pathCompile error
Record with extra instance fieldCompile error
Sealed subclass lacking final, sealed, or non-sealedCompile error

Common runtime traps

Code patternPossible result
Downcast without valid object typeClassCastException
Store wrong subtype into covariant arrayArrayStoreException
Dereference nullNullPointerException
Access invalid array/list indexArrayIndexOutOfBoundsException or IndexOutOfBoundsException
Reuse consumed streamIllegalStateException
Modify collection during iterationConcurrentModificationException in many fail-fast cases
Parse invalid number/dateParsing exception
JDBC read before ResultSet.next()Invalid cursor position
Future task throws exceptionExecutionException from Future.get()
File operation without permissions or missing pathI/O exception or failed existence check

Fast topic drill map

Use this table to decide what to practice next in an IT Mastery question bank.

If you miss questions on…Drill these topics
“Does it compile?”Access modifiers, overload/override, checked exceptions, generics, var, records, sealed classes
Unexpected outputInitialization order, polymorphism, string immutability, numeric promotion, switch fall-through
CollectionsEquality, hashing, sorting, mutability, wildcards, factory methods
StreamsLaziness, terminal operations, collectors, optionals, primitive streams, parallel behavior
Date/timeImmutability, Period vs Duration, formatter patterns, locale behavior
I/OPath operations, Files methods, try-with-resources, serialization
ConcurrencyExecutors, Future, synchronization, volatile, atomics, race conditions
JDBCStatement type, execution method, transaction handling, cursor movement
Modulesrequires, exports, opens, service directives, module path vs classpath
LocalizationLocale, ResourceBundle fallback, number/date formatting

Final pre-practice checklist

Before starting a mock exam for Oracle Java SE 17 Developer (1Z0-829), confirm that you can:

  • Predict whether short Java snippets compile.
  • Explain overload resolution and override dispatch.
  • Trace object initialization order.
  • Distinguish identity, equality, and ordering.
  • Use generics wildcards without guessing.
  • Identify stream source, intermediate operations, terminal operation, and result type.
  • Choose correct collection implementations for ordering, uniqueness, and sorting.
  • Explain Period, Duration, and core java.time classes.
  • Know when I/O and JDBC resources are opened, used, and closed.
  • Recognize concurrency hazards in shared mutable state.
  • Read module-info.java directives accurately.
  • Spot when mutability, reflection, serialization, SQL, or file paths create safety issues.

Practical next step

Pick one weak area from the drill map and complete a focused set of original practice questions with detailed explanations. Then take a mixed mock exam only after your topic drills show that you can explain both the correct answer and the traps in the distractors.

Continue in IT Mastery

Use this Quick Review as a final concept map, then move into IT Mastery for focused topic drills, mixed practice sets, timed mock exams, and detailed explanations. The practice questions are original IT Mastery practice items; they are not official Oracle questions, copied live-exam content, or exam dumps.

Browse Certification Practice Tests by Exam Family