Details

OCP Oracle Certified Professional Java SE 11 Programmer II Study Guide


OCP Oracle Certified Professional Java SE 11 Programmer II Study Guide

Exam 1Z0-816 and Exam 1Z0-817
1. Aufl.

von: Scott Selikoff, Jeanne Boyarsky

32,99 €

Verlag: Wiley
Format: EPUB
Veröffentl.: 30.06.2020
ISBN/EAN: 9781119617587
Sprache: englisch
Anzahl Seiten: 768

DRM-geschütztes eBook, Sie benötigen z.B. Adobe Digital Editions und eine Adobe ID zum Lesen.

Beschreibungen

<p><b>This<i> OCP Oracle Certified Professional Java SE 11 Programmer I Study Guide: Exam 1Z0-815</i> and the <i>Programmer II Study Guide: Exam 1Z0-816</i>  were published before Oracle announced major changes to its OCP certification program and the release of the new Developer 1Z0-819 exam.</b><br /><br /><b>No matter the changes, rest assured both of the Programmer I and II Study Guides cover everything you need to prepare for and take Exam 1Z0-819. If you’ve purchased one of the Programmer Study Guides, purchase the other one and you’ll  be all set.</b><br /><br /><em style="font-family: Arial; font-size: 13.3333px;">NOTE: The OCP Java SE 11 Programmer I Exam 1Z0-815 and Programmer II Exam 1Z0-816 have been retired (as of October 1, 2020), and Oracle has released a new Developer Exam 1Z0-819 to replace the previous exams. The Upgrade Exam 1Z0-817 remains the same.</i></p> <p><br /><br /><b>The completely-updated preparation guide for the new OCP Oracle Certified Professional Java SE 11 Programmer II exam—covers Exam 1Z0-816</b></p> <p>Java, a platform-independent, object-oriented programming language, is used primarily in mobile and desktop application development. It is a popular language for client-side cloud applications and the principal language used to develop Android applications. Oracle has recently updated its Java Programmer certification tracks for Oracle Certified Professional.</p> <p><i>OCP Oracle Certified Professional Java SE 11 Programmer II Study Guide </i>ensures that you are fully prepared for this difficult certification exam. Covering 100% of exam objectives, this in-depth study guide provides comprehensive coverage of the functional-programming knowledge necessary to succeed. Every exam topic is thoroughly and completely covered including exceptions and assertions, class design, generics and collections, threads, concurrency, IO and NIO, and more. Access to Sybex's superior online interactive learning environment and test bank—including self-assessment tests, chapter tests, bonus practice exam questions, electronic flashcards, and a searchable glossary of important terms—provides everything you need to be fully prepared on exam day. This must-have guide:</p> <ul> <li>Covers all exam objectives such as inheriting abstract classes and interfaces, advanced strings and localization, JDBC, and Object-Oriented design principles and patterns</li> <li>Explains complex material and reinforces your comprehension and retention of important topics</li> <li>Helps you master more advanced areas of functional programming</li> <li>Demonstrates practical methods for building Java solutions</li> </ul> <p><i>OCP Oracle Certified Professional Java SE 11 Programmer II Study Guide</i> will prove invaluable for anyone seeking achievement of this challenging exam, as well as junior- to senior-level programmers who uses Java as their primary programming language.</p>
<p>Introduction xxi</p> <p>Assessment Test xliv</p> <p><b>Chapter 1 Java Fundamentals 1</b></p> <p>Applying the <i>final </i>Modifier 2</p> <p>Declaring <i>final </i>Local Variables 3</p> <p>Adding <i>final </i>to Instance and <i>static </i>Variables 4</p> <p>Writing <i>final </i>Methods 5</p> <p>Marking Classes <i>final </i>5</p> <p>Working with Enums 6</p> <p>Creating Simple Enums 6</p> <p>Using Enums in <i>Switch </i>Statements 8</p> <p>Adding Constructors, Fields, and Methods 9</p> <p>Creating Nested Classes 12</p> <p>Declaring an Inner Class 12</p> <p>Creating a <i>static </i>Nested Class 15</p> <p>Writing a Local Class 17</p> <p>Defining an Anonymous Class 18</p> <p>Reviewing Nested Classes 21</p> <p>Understanding Interface Members 22</p> <p>Relying on a <i>default </i>Interface Method 23</p> <p>Using <i>static </i>Interface Methods 27</p> <p>Introducing <i>private </i>Interface Methods 28</p> <p>Introducing <i>private static </i>Interface Methods 29</p> <p>Reviewing Interface Members 31</p> <p>Introducing Functional Programming 32</p> <p>Defining a Functional Interface 32</p> <p>Declaring a Functional Interface with <i>Object </i>Methods 34</p> <p>Implementing Functional Interfaces with Lambdas 36</p> <p>Writing Lambda Expressions 38</p> <p>Working with Lambda Variables 40</p> <p>Summary 43</p> <p>Exam Essentials 44</p> <p>Review Questions 46</p> <p><b>Chapter 2 Annotations 59</b></p> <p>Introducing Annotations 60</p> <p>Understanding Metadata 60</p> <p>Purpose of Annotations 61</p> <p>Creating Custom Annotations 64</p> <p>Creating an Annotation 64</p> <p>Specifying a Required Element 65</p> <p>Providing an Optional Element 66</p> <p>Selecting an Element Type 67</p> <p>Applying Element Modifiers 67</p> <p>Adding a Constant Variable 68</p> <p>Reviewing Annotation Rules 68</p> <p>Applying Annotations 69</p> <p>Using Annotations in Declarations 69</p> <p>Mixing Required and Optional Elements 71</p> <p>Creating a <i>value() </i>Element 71</p> <p>Passing an Array of Values 73</p> <p>Declaring Annotation-Specific Annotations 74</p> <p>Limiting Usage with @<i>Target </i>74</p> <p>Storing Annotations with @<i>Retention </i>77</p> <p>Generating Javadoc with @<i>Documented </i>77</p> <p>Inheriting Annotations with @<i>Inherited </i>79</p> <p>Supporting Duplicates with @<i>Repeatable </i>79</p> <p>Reviewing Annotation-Specific Annotations 81</p> <p>Using Common Annotations 83</p> <p>Marking Methods with @<i>Override </i>83</p> <p>Declaring Interfaces with @<i>FunctionalInterface </i>84</p> <p>Retiring Code with @<i>Deprecated </i>85</p> <p>Ignoring Warnings with @<i>SuppressWarnings </i>86</p> <p>Protecting Arguments with @<i>SafeVarargs </i>88</p> <p>Reviewing Common Annotations 89</p> <p>Summary 91</p> <p>Exam Essentials 92</p> <p>Review Questions 94</p> <p><b>Chapter 3 Generics and Collections 105</b></p> <p>Using Method References 107</p> <p>Calling Static Methods 108</p> <p>Calling Instance Methods on a Particular Object 109</p> <p>Calling Instance Methods on a Parameter 109</p> <p>Calling Constructors 110</p> <p>Reviewing Method References 110</p> <p>Using Wrapper Classes 111</p> <p>Using the Diamond Operator 113</p> <p>Using Lists, Sets, Maps, and Queues 114</p> <p>Common Collections Methods 115</p> <p>Using the <i>List </i>Interface 119</p> <p>Using the <i>Set </i>Interface 124</p> <p>Using the <i>Queue </i>Interface 126</p> <p>Using the <i>Map </i>Interface 128</p> <p>Comparing Collection Types 135</p> <p>Sorting Data 137</p> <p>Creating a <i>Comparable </i>Class 137</p> <p>Comparing Data with a <i>Comparator </i>141</p> <p>Comparing <i>Comparable </i>and <i>Comparator </i>142</p> <p>Comparing Multiple Fields 143</p> <p>Sorting and Searching 145</p> <p>Working with Generics 147</p> <p>Generic Classes 148</p> <p>Generic Interfaces 151</p> <p>Raw Types 152</p> <p>Generic Methods 153</p> <p>Bounding Generic Types 154</p> <p>Putting It All Together 159</p> <p>Summary 161</p> <p>Exam Essentials 163</p> <p>Review Questions 164</p> <p><b>Chapter 4 Functional Programming 175</b></p> <p>Working with Built-in Functional Interfaces 176</p> <p>Implementing <i>Supplier </i>178</p> <p>Implementing <i>Consumer </i>and <i>BiConsumer </i>179</p> <p>Implementing <i>Predicate </i>and <i>BiPredicate </i>180</p> <p>Implementing <i>Function </i>and <i>BiFunction </i>181</p> <p>Implementing <i>UnaryOperator </i>and <i>BinaryOperator </i>183</p> <p>Checking Functional Interfaces 184</p> <p>Convenience Methods on Functional Interfaces 185</p> <p>Returning an <i>Optional </i>187</p> <p>Creating an <i>Optional </i>188</p> <p>Dealing with an Empty <i>Optional </i>189</p> <p>Using Streams 191</p> <p>Understanding the Pipeline Flow 191</p> <p>Creating Stream Sources 194</p> <p>Using Common Terminal Operations 197</p> <p>Using Common Intermediate Operations 204</p> <p>Putting Together the Pipeline 209</p> <p>Working with Primitive Streams 213</p> <p>Creating Primitive Streams 214</p> <p>Mapping Streams 217</p> <p>Using <i>Optional l </i>with Primitive Streams 219</p> <p>Summarizing Statistics 220</p> <p>Learning the Functional Interfaces for Primitives 221</p> <p>Working with Advanced Stream Pipeline Concepts 224</p> <p>Linking Streams to the Underlying Data 224</p> <p>Chaining Optionals 224</p> <p>Collecting Results 227</p> <p>Summary 234</p> <p>Exam Essentials 236</p> <p>Review Questions 238</p> <p><b>Chapter 5 Exceptions, Assertions, and Localization 247</b></p> <p>Reviewing Exceptions 248</p> <p>Handling Exceptions 248</p> <p>Distinguishing between <i>throw </i>and <i>throws </i>250</p> <p>Examining Exception Categories 250</p> <p>Inheriting Exception Classes 252</p> <p>Creating Custom Exceptions 253</p> <p>Declaring Exception Classes 253</p> <p>Adding Custom Constructors 253</p> <p>Printing Stack Traces 255</p> <p>Automating Resource Management 256</p> <p>Constructing Try-With-Resources Statements 256</p> <p>Learning the New Effectively Final Feature 259</p> <p>Understanding Suppressed Exceptions 261</p> <p>Declaring Assertions 264</p> <p>Validating Data with the <i>assert </i>Statement 264</p> <p>Enabling Assertions 266</p> <p>Disabling Assertions 267</p> <p>Applying Assertions 267</p> <p>Writing Assertions Correctly 268</p> <p>Working with Dates and Times 268</p> <p>Creating Dates and Times 269</p> <p>Formatting Dates and Times 271</p> <p>Supporting Internationalization and Localization 276</p> <p>Picking a Locale 276</p> <p>Localizing Numbers 279</p> <p>Localizing Dates 283</p> <p>Specifying a Locale Category 284</p> <p>Loading Properties with Resource Bundles 285</p> <p>Creating a Resource Bundle 286</p> <p>Picking a Resource Bundle 288</p> <p>Selecting Resource Bundle Values 289</p> <p>Formatting Messages 291</p> <p>Using the <i>Properties </i>Class 292</p> <p>Summary 293</p> <p>Exam Essentials 294</p> <p>Review Questions 295</p> <p><b>Chapter 6 Modular Applications 309</b></p> <p>Reviewing Module Directives 310</p> <p>Comparing Types of Modules 311</p> <p>Named Modules 311</p> <p>Automatic Modules 312</p> <p>Unnamed Modules 315</p> <p>Comparing Module Types 315</p> <p>Analyzing JDK Dependencies 316</p> <p>Identifying Built-in Modules 316</p> <p>Using <i>jdeps </i>318</p> <p>Migrating an Application 321</p> <p>Determining the Order 321</p> <p>Exploring a Bottom-Up Migration Strategy 322</p> <p>Exploring a Top-Down Migration Strategy 324</p> <p>Splitting a Big Project into Modules 325</p> <p>Failing to Compile with a Cyclic Dependency 326</p> <p>Creating a Service 328</p> <p>Declaring the Service Provider Interface 329</p> <p>Creating a Service Locator 330</p> <p>Invoking from a Consumer 332</p> <p>Adding a Service Provider 333</p> <p>Merging Service Locator and Consumer 334</p> <p>Reviewing Services 337</p> <p>Summary 337</p> <p>Exam Essentials 338</p> <p>Review Questions 339</p> <p><b>Chapter 7 Concurrency 345</b></p> <p>Introducing Threads 347</p> <p>Distinguishing Thread Types 348</p> <p>Understanding Thread Concurrency 348</p> <p>Defining a Task with <i>Runnable </i>349</p> <p>Creating a Thread 351</p> <p>Polling with Sleep 353</p> <p>Creating Threads with the Concurrency API 355</p> <p>Introducing the Single-Thread Executor 355</p> <p>Shutting Down a Thread Executor 356</p> <p>Submitting Tasks 357</p> <p>Waiting for Results 358</p> <p>Submitting Task Collections 362</p> <p>Scheduling Tasks 363</p> <p>Increasing Concurrency with Pools 366</p> <p>Writing Thread-Safe Code 367</p> <p>Understanding Thread-Safety 367</p> <p>Protecting Data with Atomic Classes 369</p> <p>Improving Access with Synchronized Blocks 371</p> <p>Synchronizing on Methods 373</p> <p>Understanding the <i>Lock </i>Framework 375</p> <p>Orchestrating Tasks with a <i>CyclicBarrier </i>379</p> <p>Using Concurrent Collections 382</p> <p>Understanding Memory Consistency Errors 383</p> <p>Working with Concurrent Classes 383</p> <p>Obtaining Synchronized Collections 388</p> <p>Identifying Threading Problems 389</p> <p>Understanding Liveness 390</p> <p>Managing Race Conditions 393</p> <p>Working with Parallel Streams 394</p> <p>Creating Parallel Streams 395</p> <p>Performing a Parallel Decomposition 396</p> <p>Processing Parallel Reductions 398</p> <p>Avoiding Stateful Operations 403</p> <p>Summary 404</p> <p>Exam Essentials 405</p> <p>Review Questions 406</p> <p><b>Chapter 8 I/O 419</b></p> <p>Understanding Files and Directories 420</p> <p>Conceptualizing the File System 420</p> <p>Storing Data as Bytes 422</p> <p>Introducing the <i>File </i>Class 422</p> <p>Introducing I/O Streams 426</p> <p>Understanding I/O Stream Fundamentals 426</p> <p>Learning I/O Stream Nomenclature 427</p> <p>Common I/O Stream Operations 433</p> <p>Reading and Writing Data 433</p> <p>Closing the Stream 435</p> <p>Manipulating Input Streams 436</p> <p>Flushing Output Streams 438</p> <p>Reviewing Common I/O Stream Methods 439</p> <p>Working with I/O Stream Classes 440</p> <p>Reading and Writing Binary Data 440</p> <p>Buffering Binary Data 441</p> <p>Reading and Writing Character Data 443</p> <p>Buffering Character Data 444</p> <p>Serializing Data 445</p> <p>Printing Data 452</p> <p>Review of Stream Classes 457</p> <p>Interacting with Users 458</p> <p>Printing Data to the User 459</p> <p>Reading Input as a Stream 460</p> <p>Closing <i>System </i>Streams 460</p> <p>Acquiring Input with <i>Console </i>461</p> <p>Summary 464</p> <p>Exam Essentials 464</p> <p>Review Questions 466</p> <p><b>Chapter 9 NIO.2 475</b></p> <p>Introducing NIO.2 476</p> <p>Introducing <i>Path </i>477</p> <p>Creating Paths 478</p> <p>Understanding Common NIO.2 Features 483</p> <p>Interacting with Paths 486</p> <p>Viewing the Path with <i>toString()</i>, <i>getNameCount()</i>, and <i>getName() </i>486</p> <p>Creating a New Path with <i>subpath() </i>487</p> <p>Accessing Path Elements with <i>getFileName()</i>, <i>getParent()</i>, and <i>getRoot() </i>488</p> <p>Checking Path Type with <i>isAbsolute() </i>and <i>toAbsolutePath() </i>490</p> <p>Joining Paths with <i>resolve() </i>491</p> <p>Deriving a Path with <i>relativize() </i>491</p> <p>Cleaning Up a Path with <i>normalize() </i>493</p> <p>Retrieving the File System Path with <i>toRealPath() </i>493</p> <p>Reviewing <i>Path </i>Methods 494</p> <p>Operating on Files and Directories 495</p> <p>Checking for Existence with <i>exists() </i>495</p> <p>Testing Uniqueness with <i>isSameFile() </i>496</p> <p>Making Directories with <i>createDirectory() </i>and <i>createDirectories() </i>497</p> <p>Copying Files with <i>copy() </i>498</p> <p>Moving or Renaming Paths with <i>move() </i>500</p> <p>Deleting a File with <i>delete() </i>and <i>deleteIfExists() </i>500</p> <p>Reading and Writing Data with <i>newBufferedReader() </i>and <i>newBufferedWriter() </i>501</p> <p>Reading a File with <i>readAllLines() </i>502</p> <p>Reviewing <i>Files </i>Methods 502</p> <p>Managing File Attributes 503</p> <p>Discovering File Attributes 503</p> <p>Improving Attribute Access 506</p> <p>Applying Functional Programming 508</p> <p>Listing Directory Contents 508</p> <p>Traversing a Directory Tree 510</p> <p>Searching a Directory with <i>find() </i>514</p> <p>Reading a File with <i>lines() </i>515</p> <p>Comparing Legacy <i>java.io.File </i>and NIO.2 Methods 517</p> <p>Summary 518</p> <p>Exam Essentials 518</p> <p>Review Questions 520</p> <p><b>Chapter 10 JDBC 529</b></p> <p>Introducing Relational Databases and SQL 530</p> <p>Identifying the Structure of a Relational Database 532</p> <p>Writing Basic SQL Statements 533</p> <p>Introducing the Interfaces of JDBC 535</p> <p>Connecting to a Database 537</p> <p>Building a JDBC URL 537</p> <p>Getting a Database <i>Connection </i>539</p> <p>Working with a <i>PreparedStatement </i>542</p> <p>Obtaining a <i>PreparedStatement </i>543</p> <p>Executing a <i>PreparedStatement </i>543</p> <p>Working with Parameters 546</p> <p>Updating Multiple Times 549</p> <p>Getting Data from a <i>ResultSet </i>551</p> <p>Reading a <i>ResultSet </i>551</p> <p>Getting Data for a Column 555</p> <p>Using Bind Variables 556</p> <p>Calling a <i>CallableStatement </i>557</p> <p>Calling a Procedure without Parameters 558</p> <p>Passing an <i>IN </i>Parameter 559</p> <p>Returning an <i>OUT </i>Parameter 559</p> <p>Working with an <i>INOUT </i>Parameter 560</p> <p>Comparing Callable Statement Parameters 560</p> <p>Closing Database Resources 561</p> <p>Summary 564</p> <p>Exam Essentials 564</p> <p>Review Questions 566</p> <p><b>Chapter 11 Security 575</b></p> <p>Designing a Secure Object 576</p> <p>Limiting Accessibility 576</p> <p>Restricting Extensibility 577</p> <p>Creating Immutable Objects 578</p> <p>Cloning Objects 581</p> <p>Introducing Injection and Input Validation 583</p> <p>Preventing Injection with a <i>PreparedStatement </i>583</p> <p>Invalidating Invalid Input with Validation 586</p> <p>Working with Confidential Information 588</p> <p>Guarding Sensitive Data from Output 589</p> <p>Protecting Data in Memory 589</p> <p>Limiting File Access 590</p> <p>Serializing and Deserializing Objects 591</p> <p>Specifying Which Fields to Serialize 591</p> <p>Customizing the Serialization Process 592</p> <p>Pre/Post-Serialization Processing 593</p> <p>Reviewing Serialization Methods 596</p> <p>Constructing Sensitive Objects 597</p> <p>Making Methods <i>final </i>598</p> <p>Making Classes <i>final </i>598</p> <p>Making the Constructor <i>private </i>599</p> <p>Preventing Denial of Service Attacks 600</p> <p>Leaking Resources 600</p> <p>Reading Very Large Resources 600</p> <p>Including Potentially Large Resources 601</p> <p>Overflowing Numbers 601</p> <p>Wasting Data Structures 602</p> <p>Summary 603</p> <p>Exam Essentials 604</p> <p>Review Questions 605</p> <p><b>Appendices 611</b></p> <p><b>Appendix A The Upgrade Exam 611</b></p> <p>Working with Local Variable Type Inference 612</p> <p>Type Inference of <i>var </i>613</p> <p>Examples with <i>var </i>614</p> <p>Review of <i>var </i>Rules 617</p> <p>Introducing Modules 617</p> <p>Exploring a Module 618</p> <p>Benefits of Modules 619</p> <p>Creating and Running a Modular Program 621</p> <p>Creating the Files 622</p> <p>Compiling Our First Module 623</p> <p>Running Our First Module 625</p> <p>Packaging Our First Module 627</p> <p>Updating Our Example for Multiple Modules 628</p> <p>Updating the Feeding Module 628</p> <p>Creating a Care Module 629</p> <p>Creating the Talks Module 631</p> <p>Creating the Staff Module 634</p> <p>Diving into the <i>module-info </i>File 635</p> <p><i>exports </i>635</p> <p><i>requires transitive </i>636</p> <p><i>provides</i>, <i>uses</i>, and <i>opens </i>639</p> <p>Discovering Modules 639</p> <p>The <i>java </i>Command 639</p> <p>The <i>jar </i>Command 643</p> <p>The <i>jdeps </i>Command 643</p> <p>The <i>jmod </i>Command 645</p> <p>Reviewing Command-Line Options 645</p> <p>Summary 648</p> <p>Exam Essentials 649</p> <p>Review Questions 650</p> <p><b>Appendix B Answers to Review Questions 657</b></p> <p>Chapter 1: Java Fundamentals 658</p> <p>Chapter 2: Annotations 662</p> <p>Chapter 3: Generics and Collections 665</p> <p>Chapter 4: Functional Programming 669</p> <p>Chapter 5: Exceptions, Assertions, and Localization 672</p> <p>Chapter 6: Modular Applications 676</p> <p>Chapter 7: Concurrency 678</p> <p>Chapter 8: I/O 682</p> <p>Chapter 9: NIO.2 685</p> <p>Chapter 10: JDBC 689</p> <p>Chapter 11: Security 691</p> <p>Appendix A: The Upgrade Exam 693</p> <p>Index 697</p>
<p><b>Scott Selikoff, OCA/OCP 8 and OCP 11,</b> has been a professional Java Enterprise architect for over 20 years. He is the founder of Selikoff Solutions, LLC, specializing in building custom mobile and server solutions for businesses in the tri-state New York City area. <b>Jeanne Boyarsky, OCA/OCP 8 and OCP 11,</b> is a Java Champion and has worked as a Java developer for a major bank for more than 18 years. She is a senior moderator at CodeRanch, and trains and mentors students of all levels, including the programming division of a FIRST robotics team.</p>
<p><b>The new study guide for the latest Oracle Certified Java SE 11 Programmer II and Upgrade exams.</b> <p>The <i>OCP Oracle Certified Professional Java SE 11 Programmer II Study Guide</i>??is essential for anyone preparing for this challenging exam. Oracle has updated its Java Programmer certification track for OCP certification—this must-have guide covers 100% of the latest Exam 1Z0-816 objectives PLUS an appendix custom tailored for those taking the 1Z0-817 Upgrade Exam. <p>In-depth chapters provide clear and accurate coverage of the knowledge and skills needed to be thoroughly prepared on exam day. This one-stop resource includes access to the Sybex online interactive learning environment and test bank, featuring a self-assessment test, chapter quizzes, bonus practice exam questions, electronic flashcards, a searchable glossary of key terms, and more. <p><b>Coverage of 100% of all exam objectives in this Study Guide means you'll be ready for:</b> <ul> <li>Class Design</li> <li>Functional Programming</li> <li>Secure Coding</li> <li>Advanced strings and Localization</li> <li>Functional Interface and Lambda Expressions</li> <li>Java Stream API</li> <li>Annotations</li> <li>Lambda Operations on Streams</li> <li>Database Applications with JDBC</li> <li>Threads, Concurrency, I/O, and NIO.2</li> </ul> <p><b>ABOUT THE OCP PROGRAM</b> <p>The Oracle Certified Professional (OCP)??credential validates a high level of skill and knowledge in a specific area of Oracle technology, such as Java SE and Oracle Cloud Infrastructure. OCP certification is regularly used by IT managers as a benchmark to evaluate the qualifications of employees and job candidates. Visit education.oracle.com/certification for more information. <p><b>Interactive learning environment</b> <p>Take your exam prep to the next level with Sybex's superior interactive online study tools. To access our learning environment, simply visit <b>http://www.wiley.com/go/ sybextestprep</b>, type in your unique PIN, and instantly gain one year of FREE access after activation to: <ul> <li><b>Interactive test bank with 2</b> practice exams. Practice exams help you identify areas where further review is needed. Get more than 90% of the answers correct, and you're ready to take the certification exam.</li> <li><b>More than 250 electronic flashcards</b> to reinforce learning and last-minute prep before the exam</li> <li><b>Comprehensive glossary</b> in PDF format gives you instant access to the key terms so you are fully prepared</li> </ul>

Diese Produkte könnten Sie auch interessieren:

Domain Architectures
Domain Architectures
von: Daniel J. Duffy
PDF ebook
31,99 €