PREPARE FOR YOUR JAVA INTERVIEW IN A DAY!! Java concepts and notes with hundreds of practice questions.Java Interview Course is written based on the experience of many professional Software Architects who have conducted hundreds of technical interviews for their organization.Java Interview Course covers most of the Java concepts that applicants are expected to have hands-on experience and must have thorough conceptual understating. This book also includes lots of snippets of code and figures to explain the concepts. A clear understanding of the principles of software design and language is important as the same questions can be discussed during an interview in several different ways. Interviewers are interested not only in hearing the correct response but also in your opinion and thoughts on the issue. Your approach towards interpreting the questions and articulating your thoughts plays a crucial role in your success. To build the courage to face such an interview, you need to spend a decent deal of time coding, reading technical topics, and talking to peers about it. I hope this book helps you plan not just for your next interview but also for your daily task of developing software.Concepts coveredJava Program AnatomyJava Program and JVMData TypesNaming ConventionObject classAccess Modifiersstaticfinalstatic initialization blockfinally()finalize()Widening vs Narrowing Conversiongetters and settersvarargs vs object arraydefault interface methodstatic interface methodAnnotationsPreferencesPass by value or reference PolymorphismOverridingOverloadingAbstractionInheritanceCompositionFundamental Design ConceptsDI vs IoCService LocatorDiamond ProblemProgramming to InterfaceAbstract class vs InterfaceInternationalization and LocalizationImmutable ObjectsCloningData TypesNaNEnumSetComparing Data Typesenum vs public static int fieldWrapper ClassesAuto-boxing and Auto-unboxingBigInteger and BigDecimal StringsString Literal vs ObjectString InterningString Pool Memory ManagementImmutabilityCircumvent String immutabilityStringBuffer vs StringBuilderUnicodeInner ClassesStatic Member Nested ClassLocal Inner ClassNon-Static Nested ClassAnonymous Inner ClassFunctional ProgrammingLambda ExpressionFunctional InterfacePure FunctionsFluent InterfaceGenerics-Type WildcardsGenerics - MethodJava Generics vs Java ArrayGenerics - Type ErasureCo-varianceContra-varianceCo-variance vs Contra-varianceCollectionsCollection design aspectsCollection InterfacesCollection Types Set List Queue MapAlgorithmsComparable vs ComparatorhashCode() and equals()HashTable vs HashMapSynchronized vs Concurrent CollectionsIterating over collectionsfail-fast vs fail-safeError and ExceptionChecked vs Unchecked vs ErrorException Handling Best Practicestry-with-resourceThreading TermsThread LifecycleThread TerminationRunnable vs ThreadRunnable vs CallableDaemon ThreadRace Condition and Immutable objectThread PoolSynchronizationConcurrent vs Parallel vs AsynchronousThread SynchronizationSynchronized method vs Synchronized blockConditional SynchronizationVolatilestatic vs volatile vs synchronizedThreadLocal Storagewait() vs sleep()Joining ThreadAtomic ClassesLockReadWriteLockSynchronizers Barrier Semaphore Phaser Exchanger LatchExecutor FrameworkFork-Join FrameworkReflectionPurpose of reflection Drawbacks of Reflection JSON Memory ManagementStack vs Heap Heap fragmentation Object Serialization Garbage Collection Memory ManagementWeak vs Soft vs Phantom ReferenceUnit vs Integration vs Regression vs ValidationTesting private membersMocking and Mock ObjectsJava Tools