<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: saurabhshar</title>
    <description>The latest articles on DEV Community by saurabhshar (@saurabhshar).</description>
    <link>https://dev.to/saurabhshar</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F597753%2F4f7d925b-f5f3-4bda-9b9d-4d642827329c.png</url>
      <title>DEV Community: saurabhshar</title>
      <link>https://dev.to/saurabhshar</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/saurabhshar"/>
    <language>en</language>
    <item>
      <title>What are new Java 16 features?</title>
      <dc:creator>saurabhshar</dc:creator>
      <pubDate>Sat, 03 Apr 2021 04:57:13 +0000</pubDate>
      <link>https://dev.to/saurabhshar/what-are-new-java-16-features-40mp</link>
      <guid>https://dev.to/saurabhshar/what-are-new-java-16-features-40mp</guid>
      <description>&lt;p&gt;The latest version of java – open-source Java 16 (Java SE 16) and Java 16 Development Kit (JDK 16) was released recently. As this is the final release for Java 16; developers can download it and try the new version. In this article we’ll get to know about new Java 16 features introduced with this release.&lt;/p&gt;

&lt;p&gt;Jdk 16 Download : &lt;a href="https://www.oracle.com/java/technologies/javase-jdk16-downloads.html"&gt;https://www.oracle.com/java/technologies/javase-jdk16-downloads.html&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Jdk 16 release date : 16 March 2021&lt;/p&gt;

&lt;p&gt;The main Java 16 features offered to users with the new release are 17 major enhancements (known as JEP – JDK Enhancement Proposals). This also includes 3 incubator modules and 1 preview feature, along with thousands of performance, stability and security changes.&lt;/p&gt;

&lt;p&gt;Java 16 Features&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;JEP 338: Vector API (Incubator)&lt;/li&gt;
&lt;li&gt;JEP 347: Enable C++ 14 Language Features&lt;/li&gt;
&lt;li&gt;JEP 357: Migrate from Mercurial to Git&lt;/li&gt;
&lt;li&gt;JEP 369: Migrate to GitHub&lt;/li&gt;
&lt;li&gt;JEP 376: ZGC: Concurrent Thread-Stack Processing&lt;/li&gt;
&lt;li&gt;JEP 380: Unix-Domain Socket Channels&lt;/li&gt;
&lt;li&gt;JEP 386: Alpine Linux Port&lt;/li&gt;
&lt;li&gt;JEP 387: Elastic Metaspace&lt;/li&gt;
&lt;li&gt;JEP 388: Windows/AArch64 Port&lt;/li&gt;
&lt;li&gt;JEP 389: Foreign Linker API&lt;/li&gt;
&lt;li&gt;JEP 390: Warnings for Value-Based Classes&lt;/li&gt;
&lt;li&gt;JEP 392: Packaging Tool&lt;/li&gt;
&lt;li&gt;JEP 393: Foreign-Memory Access API&lt;/li&gt;
&lt;li&gt;JEP 394: Pattern Matching for instanceof&lt;/li&gt;
&lt;li&gt;JEP 395: Records&lt;/li&gt;
&lt;li&gt;JEP 396: Encapsulate JDK Internals by Default&lt;/li&gt;
&lt;li&gt;JEP 397: Sealed Classes&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;What are language enhancements appearing as new Java 16 features?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Records&lt;/strong&gt;&lt;br&gt;
Records were introduced as incubating feature in Java 14 &amp;amp; 15 as preview, and now finalized to be called a standard feature. Records are used to help with a compact syntax to declaring classes which are transparent holders for immutable data. Primarily, this helps in improving code readability and maintainability, it minimizes verbosity of these classes as well.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pattern Matching for instanceof&lt;/strong&gt;&lt;br&gt;
This was also an incubating feature in previous releases and has become a standard Java 16 feature with new release. (In the past, this was also introduced as a preview feature in Java 14 and again in Java 15.)&lt;/p&gt;

&lt;p&gt;Purpose – this feature allows you to express common logic in a program more securely i.e. now the conditional extraction of components from objects could be more concise and safe.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Java 16 features for JVM Improvements&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;Elastic Metaspace&lt;/strong&gt;&lt;br&gt;
This is expected to improve the usage of metaspace (memory space used by the class-metadata). It returns unused HotSpot VM metadata to the operating system immediately and so, less memory consumption and improved efficiency. This improves elasticity and improves the performance of the application and causes less memory utilization.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;ZGC Concurrent Thread Processing&lt;/strong&gt;&lt;br&gt;
Move ZGC thread-stack processing from safe points to a concurrent phase, so that even for the large heaps all pauses and scalability issues are eliminated effectively This removes the only source of latency in the ZGC garbage collector and drastically improves performance and efficiency of applications in this and future releases.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;New Tools and Libraries&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Unix-Domain Socket Channels&lt;/strong&gt;&lt;br&gt;
Unix domain sockets are old features of Unix platforms(mostly!), These are now supported in Windows Server 2019 and in Windows 10 as well. The new Java 16 feature adds socket support in Unix domain (AF_UNIX) to the socket channel and server-socket channel APIs (part of java.nio.channels).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Packaging Tool&lt;/strong&gt;&lt;br&gt;
This assists in packaging self contained Java applications. It provides a way to generate platform native packages such as deb and rpm in Linux, pkg and dmg in macOS and msi and exe in Windows to give users a natural installation experience. These formats include pkg and dmg on macOS, exe and msi for Windows, and deb/rpm on Linux. This improves the end-user experience when installing apps and makes them easy to deploy.&lt;/p&gt;

&lt;p&gt;You can now define launch-time parameters to at packaging time and this can be called directly either from the command line or by a program using the ToolProvider API. This feature initially came as an incubator feature in Java 14.&lt;/p&gt;

&lt;p&gt;Note – Name of the jpackage module has changed from jdk.incubator.jpackage to jdk.jpackage&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Futureproofing Your Work&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Warning for Value-Based Classes&lt;/strong&gt;&lt;br&gt;
Primitive Wrapper class – java.lang.Double, java.lang.Integer, etc.&lt;/p&gt;

&lt;p&gt;Value based Class – java.time.LocalDateTime, java.util.Optional etc.&lt;/p&gt;

&lt;p&gt;This feature makes the primitive wrapper classes as value based and add forRemoval to constructors (deprecated since JDK 9). This prompts new warnings. If there is any incorrect attempt to synchronize on instances of value-based classes in the Java then there will be warnings provided for them.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Strongly Encapsulate JDK Internals by default&lt;/strong&gt;&lt;br&gt;
This feature, by default, enables strong encapsulation of all internal elements of the JDK (exception to this is critical internal APIs for ex. sun.misc.Unsafe). All the code that accesses internal JDK APIs and which previously compiled successfully with earlier releases, may not work by default anymore.&lt;/p&gt;

&lt;p&gt;This feature is to encourage developers to start migrating from use of internal elements to standard java APIs. This was they can upgrade without issue to future Java releases.&lt;/p&gt;

&lt;p&gt;Launcher option -–illegal-access directs strong encapsulation for JDK 9 and until JDK 15. From jdk 15 onwards this defaults to warning, and from JDK 16 it defaults to deny. For now, It’s still possible to relax encapsulation mildly for all packages with a single command-line option, however in future specific packages with –add-opens only will work.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Improving Productivity for OpenJDK Developers&lt;/strong&gt;&lt;br&gt;
These changes are primarily visible to developers working to develop OpenJDK and not to Java developers working to create applications.&lt;/p&gt;

&lt;p&gt;*Move from Mercurial to Git&lt;br&gt;
*Migrate to GitHub&lt;br&gt;
OpenJDK Community’s source code repositories migrated from Mercurial to Git and host them on GitHub (applicable for JDK 11 and beyond).&lt;/p&gt;

&lt;p&gt;New OpenJDK Git repositories – &lt;a href="https://github.com/openjdk"&gt;https://github.com/openjdk&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Enable C++14 Language Features (in JDK source code)&lt;/strong&gt;&lt;br&gt;
This feature talks about the usage of C++14 language features in JDK C++ code.&lt;/p&gt;

&lt;p&gt;Alpine Linux Port&lt;br&gt;
Windows/AArch64 Port&lt;br&gt;
The main idea behind these changes is not the porting effort but rather to integrate into main repository of java.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tooling Support&lt;/strong&gt;&lt;br&gt;
Tooling support at present helps drive developer productivity. With Java 16, Oracle continues to welcome the work of prime IDE vendors who are offering offer developers support for current Java versions. Developers will continue to receive Java 16 support with these IDEs:&lt;/p&gt;

&lt;p&gt;Eclipse Marketplace&lt;br&gt;
JetBrains IDEA&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Incubator and Preview Features&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Foreign Linker API&lt;/strong&gt;&lt;br&gt;
Java has always supported native method calls via JNI (Java Native Interface) since long. JNI, however, is difficult and error prone. With this change JNI is replaced by a new API – a pure Java way to access native code. As of now this is an incubator feature. This API will make it much easier to bind and work with the native library.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Vector API&lt;/strong&gt;&lt;br&gt;
This is also an incubator API. It allows vector computations which can be compiled at runtime to efficient vector hardware instructions on supported CPU architectures. This way Vector API assists in getting better performance results as compared to the scalar computations.&lt;/p&gt;

&lt;p&gt;Purpose – Using this API, Java developers will be able to easily write portable and high performance vector algorithms.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Sealed Classes (2nd Preview)&lt;/strong&gt;&lt;br&gt;
This is a preview feature. It restricts which other interfaces/classes may implement or extend them. Using this feature, the author of a class/ interface has a control over which code should implement it. It also provides a better way declaratively to restrict the use of a superclass than access modifiers.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Foreign Memory Access API (3rd Incubator)&lt;/strong&gt;&lt;br&gt;
This incubator API was first introduced in Java 14 and again in Java 15. This feature allows programs to efficiently operate on native, persistent, managed heap and other kid of kinds of foreign memory in a secured fashion. This also makes the basis for Foreign Linker API.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;FAQ –&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What is purpose of incubator modules?&lt;/strong&gt;&lt;br&gt;
Incubator modules are used to indicate developers about non-final APIs and non-final tools. This way users can offer feedback which can be taken again in the next version improving the quality of Java platform.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Preview features&lt;/strong&gt; are fully specified and fully implemented Java features which are still impermanent. They are made available in JDK releases so that developers can have a sense of them and provide feedback based on their use cases. Based on this feedback loop, the feature could be made permanent in the future release as well. This way users are able to provide timely feedback and tool vendors(IDE for example) can have time to build support for such a feature even before number of Java developers start to use it in production.&lt;/p&gt;

</description>
      <category>java</category>
    </item>
    <item>
      <title>13 Resources for technical interview preparation</title>
      <dc:creator>saurabhshar</dc:creator>
      <pubDate>Thu, 01 Apr 2021 17:34:57 +0000</pubDate>
      <link>https://dev.to/saurabhshar/resources-for-technical-interview-preparation-4bpa</link>
      <guid>https://dev.to/saurabhshar/resources-for-technical-interview-preparation-4bpa</guid>
      <description>&lt;p&gt;I am writing this page as a personal reminder for myself on various interview resources I came across over the internet during the course of my technical interview preparation. There are number of companies conducting a wide variety of different type of interviews, making it difficult to find all resources at a single location. My intention is to maintain a curated list of the resources categorizing them as needed. I hope this list and these resources are helpful to you in crushing your next interview.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Coding Interview University&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Link: &lt;a href="https://github.com/jwasham/coding-interview-university"&gt;https://github.com/jwasham/coding-interview-university&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A complete computer science study plan – originally created as a short to-do list for self study. The list of topics is really huge and some of the items may not be even required today, but they are still provided in case you need to refer them. This is like a base course that you need to take before appearing for the interviews in tech giant (like Facebook, Google, Amazon etc.)&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;OG AWS&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Visit &lt;a href="https://github.com/open-guides/og-aws"&gt;https://github.com/open-guides/og-aws&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This is a practical guide on Amazon Web Services(AWS) topics. It got conceptualized from discussion and editing by several engineers who have used AWS extensively. The contents are brief, practical and current and partial in details, for in depth study of the core services covered, you might still need to refer to AWS official documentation.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Tech Interview Handbook&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Visit &lt;a href="https://yangshun.github.io/tech-interview-handbook/"&gt;https://yangshun.github.io/tech-interview-handbook/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This is a “zero to hero” handbook to assist you in your technical interview preparation. It contains number of interview questions, cheatsheets, practical tips. This even contains post interview steps like understanding your compensation and negotiation – overall a complete guide to start your preparation.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;System Design Primer&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Visit &lt;a href="https://github.com/donnemartin/system-design-primer"&gt;https://github.com/donnemartin/system-design-primer&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This blog is essential for people aiming for system design interviews. System design is a vast topic and the resources could be found scattered all over the internet. The author has created this repo as an “organized collection” of the resources to enable readers on how to design large-scale systems.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Awesome Interview Questions&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Visit &lt;a href="https://github.com/MaximAbramchuck/awesome-interview-questions"&gt;https://github.com/MaximAbramchuck/awesome-interview-questions&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This is a curated list of interview questions on wide variety of topics and language. The question lists include questions from C/C++ to .Net, CSS, iOS, various UI or DB technologies, Data Science etc etc. The list keeps on growing 🙂&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;React Interview Questions &amp;amp; Answers&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Visit &lt;a href="https://github.com/sudheerj/reactjs-interview-questions"&gt;https://github.com/sudheerj/reactjs-interview-questions&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A huge set of top 500 ReactJS questions. Essential in case you have a ReactJs interview lined up in coming days.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Reverse interview&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Visit &lt;a href="https://github.com/viraptor/reverse-interview"&gt;https://github.com/viraptor/reverse-interview&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A lot of times people do not ask interviewer back even when prompted. This repo contains set of such questions that you may ask as reverse interview. Just remember to ask only 1 or 2 and not all of them 🙂&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Interview&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Visit &lt;a href="https://github.com/Olshansk/interview"&gt;https://github.com/Olshansk/interview&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This is again a huge compilation of curated resources to assist you in technical interview preparation. The topics range from Networking, system design to React, Crypto, Android etc.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Back-End Developer Interview Questions&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Visit &lt;a href="https://github.com/arialdomartini/Back-End-Developer-Interview-Questions"&gt;https://github.com/arialdomartini/Back-End-Developer-Interview-Questions&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A vast list of of backend questionnaire. Author has marked most of the questions as open ended i.e. there cant be any right or wrong, rather they start the discussion.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Interviews&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Visit &lt;a href="https://github.com/kdn251/interviews"&gt;https://github.com/kdn251/interviews&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A complete set of questions especially data structures and algorithms. Also, contains links of other popular online platforms that you could use as resource for your preparation.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Coding Interviews&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Visit &lt;a href="https://github.com/jayshah19949596/CodingInterviews"&gt;https://github.com/jayshah19949596/CodingInterviews&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This repository contains coding interviews if that’s what you are aiming for your next interview. This repo will give you an idea of the sample questions that might be asked and you can practice them to understand the approach for the real interview.&lt;/p&gt;

&lt;p&gt;Java Script Technical Interview Preparation&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;JavaScript Algorithms&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Visit &lt;a href="https://github.com/trekhleb/javascript-algorithms"&gt;https://github.com/trekhleb/javascript-algorithms&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This repo is home to a number of data structures and algorithm questions with their explanations.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Javascript Questions&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Visit &lt;a href="https://github.com/lydiahallie/javascript-questions"&gt;https://github.com/lydiahallie/javascript-questions&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This is a huge set of (advanced) JavaScript questions with their answers and explanations. The set of questions doesn’t seem to be updated that much consistently though(last updated June’21).&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;70 JavaScript Interview Questions&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Visit &lt;a href="https://dev.to/macmacky/70-javascript-interview-questions-5gfi"&gt;https://dev.to/macmacky/70-javascript-interview-questions-5gfi&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
