<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Основы Java on IT Ментор | Java методичка</title><link>https://krios2146.github.io/java-backend-interview-prep/%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D1%8B-java/</link><description>Recent content in Основы Java on IT Ментор | Java методичка</description><generator>Hugo</generator><language>ru</language><atom:link href="https://krios2146.github.io/java-backend-interview-prep/%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D1%8B-java/index.xml" rel="self" type="application/rss+xml"/><item><title>Java Core</title><link>https://krios2146.github.io/java-backend-interview-prep/%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D1%8B-java/java-core/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://krios2146.github.io/java-backend-interview-prep/%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D1%8B-java/java-core/</guid><description>&lt;h2 id="java-core"&gt;
 Java Core
 &lt;a class="anchor" href="#java-core"&gt;#&lt;/a&gt;
&lt;/h2&gt;







 
 

 &lt;h4 id="1-расскажи-мне-про-контракт-и-свойства-equals--hashcode"&gt;1. Расскажи мне про контракт и свойства Equals &amp;amp; Hashcode &lt;a href="#1-%d1%80%d0%b0%d1%81%d1%81%d0%ba%d0%b0%d0%b6%d0%b8-%d0%bc%d0%bd%d0%b5-%d0%bf%d1%80%d0%be-%d0%ba%d0%be%d0%bd%d1%82%d1%80%d0%b0%d0%ba%d1%82-%d0%b8-%d1%81%d0%b2%d0%be%d0%b9%d1%81%d1%82%d0%b2%d0%b0-equals--hashcode" class="anchor"&gt;#&lt;/a&gt;&lt;/h4&gt;
 &lt;p&gt;&lt;p&gt;&lt;em&gt;&lt;strong&gt;Контракт:&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Если &lt;code&gt;hashCode()&lt;/code&gt; двух объектов возвращает разные значения, то они не могут быть равны&lt;/li&gt;
&lt;li&gt;Если &lt;code&gt;equals()&lt;/code&gt; объектов true, то и хеш-коды должны быть равны&lt;/li&gt;
&lt;li&gt;Переопределив &lt;code&gt;equals()&lt;/code&gt;, всегда переопределять &lt;code&gt;hashCode()&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Если у объектов одинаковый &lt;code&gt;hashCode()&lt;/code&gt;, то они не обязательно &lt;code&gt;equals()&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;При каждом вызове &lt;code&gt;hashCode()&lt;/code&gt; для одного и того же объекта должен возвращаться один и тот же хеш-код&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;Свойства equals():&lt;/strong&gt;&lt;/em&gt;
Метод &lt;code&gt;equals()&lt;/code&gt; реализует отношение равенства (эквивалентности), которое обладает следующими свойствами:&lt;/p&gt;</description></item><item><title>Коллекции</title><link>https://krios2146.github.io/java-backend-interview-prep/%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D1%8B-java/collections/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://krios2146.github.io/java-backend-interview-prep/%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D1%8B-java/collections/</guid><description>&lt;h2 id="коллекции"&gt;
 Коллекции
 &lt;a class="anchor" href="#%d0%ba%d0%be%d0%bb%d0%bb%d0%b5%d0%ba%d1%86%d0%b8%d0%b8"&gt;#&lt;/a&gt;
&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Обязательно к прочтению&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ArrayList - 
 &lt;a href="https://habr.com/ru/articles/128269/"&gt;https://habr.com/ru/articles/128269/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;LinkedList - 
 &lt;a href="https://habr.com/ru/articles/127864/"&gt;https://habr.com/ru/articles/127864/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;HashMap - 
 &lt;a href="https://habr.com/ru/articles/128017/"&gt;https://habr.com/ru/articles/128017/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;







 
 

 &lt;h4 id="1-расскажите-как-выглядит-иерархия-коллекций"&gt;1. Расскажите как выглядит иерархия коллекций &lt;a href="#1-%d1%80%d0%b0%d1%81%d1%81%d0%ba%d0%b0%d0%b6%d0%b8%d1%82%d0%b5-%d0%ba%d0%b0%d0%ba-%d0%b2%d1%8b%d0%b3%d0%bb%d1%8f%d0%b4%d0%b8%d1%82-%d0%b8%d0%b5%d1%80%d0%b0%d1%80%d1%85%d0%b8%d1%8f-%d0%ba%d0%be%d0%bb%d0%bb%d0%b5%d0%ba%d1%86%d0%b8%d0%b9" class="anchor"&gt;#&lt;/a&gt;&lt;/h4&gt;
 &lt;p&gt;&lt;figure&gt;&lt;img src="https://krios2146.github.io/java-backend-interview-prep/collections_hierarchy.png"&gt;&lt;figcaption&gt;
 &lt;h4&gt;Collections hierarchy&lt;/h4&gt;
 &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;&lt;strong&gt;Collection&lt;/strong&gt; и &lt;strong&gt;Map&lt;/strong&gt; - два интерфейса, которые находятся на вершине иерархии JCF. Интерфейс Collection расширяют интерфейсы:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;List&lt;/li&gt;
&lt;li&gt;Queue&lt;/li&gt;
&lt;li&gt;Set&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;&lt;/p&gt;
 &lt;hr&gt;



 
 

 &lt;h4 id="2-что-такое-arraylist"&gt;2. Что такое ArrayList? &lt;a href="#2-%d1%87%d1%82%d0%be-%d1%82%d0%b0%d0%ba%d0%be%d0%b5-arraylist" class="anchor"&gt;#&lt;/a&gt;&lt;/h4&gt;
 &lt;p&gt;Это список, реализованный на основе динамически расширяемого массива. То есть под капотом буквально создается массив&lt;/p&gt;
 &lt;hr&gt;



 
 

 &lt;h4 id="3-arraylist-какая-размерность-массива-по-умолчанию"&gt;3. ArrayList. Какая размерность массива по умолчанию? &lt;a href="#3-arraylist-%d0%ba%d0%b0%d0%ba%d0%b0%d1%8f-%d1%80%d0%b0%d0%b7%d0%bc%d0%b5%d1%80%d0%bd%d0%be%d1%81%d1%82%d1%8c-%d0%bc%d0%b0%d1%81%d1%81%d0%b8%d0%b2%d0%b0-%d0%bf%d0%be-%d1%83%d0%bc%d0%be%d0%bb%d1%87%d0%b0%d0%bd%d0%b8%d1%8e" class="anchor"&gt;#&lt;/a&gt;&lt;/h4&gt;
 &lt;p&gt;&lt;p&gt;Capacity = 10&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;Можно ли задать начальную емкость/размер списка?&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;</description></item><item><title>Исключения</title><link>https://krios2146.github.io/java-backend-interview-prep/%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D1%8B-java/exceptions/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://krios2146.github.io/java-backend-interview-prep/%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D1%8B-java/exceptions/</guid><description>&lt;h2 id="исключения"&gt;
 Исключения
 &lt;a class="anchor" href="#%d0%b8%d1%81%d0%ba%d0%bb%d1%8e%d1%87%d0%b5%d0%bd%d0%b8%d1%8f"&gt;#&lt;/a&gt;
&lt;/h2&gt;







 
 

 &lt;h4 id="1-расскажите-про-иерархию-исключений"&gt;1. Расскажите про иерархию исключений &lt;a href="#1-%d1%80%d0%b0%d1%81%d1%81%d0%ba%d0%b0%d0%b6%d0%b8%d1%82%d0%b5-%d0%bf%d1%80%d0%be-%d0%b8%d0%b5%d1%80%d0%b0%d1%80%d1%85%d0%b8%d1%8e-%d0%b8%d1%81%d0%ba%d0%bb%d1%8e%d1%87%d0%b5%d0%bd%d0%b8%d0%b9" class="anchor"&gt;#&lt;/a&gt;&lt;/h4&gt;
 &lt;p&gt;&lt;figure&gt;&lt;img src="https://krios2146.github.io/java-backend-interview-prep/exception_hierarchy.png"&gt;&lt;figcaption&gt;
 &lt;h4&gt;Exceptions&lt;/h4&gt;
 &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;&lt;strong&gt;Class Throwable&lt;/strong&gt; - общий предок для всех исключений&lt;/p&gt;&lt;/p&gt;
 &lt;hr&gt;



 
 

 &lt;h4 id="2-что-такое-error-и-exception"&gt;2. Что такое Error и Exception? &lt;a href="#2-%d1%87%d1%82%d0%be-%d1%82%d0%b0%d0%ba%d0%be%d0%b5-error-%d0%b8-exception" class="anchor"&gt;#&lt;/a&gt;&lt;/h4&gt;
 &lt;p&gt;&lt;p&gt;&lt;strong&gt;Error&lt;/strong&gt; - Связаны с проблемами уровня JVM&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Exception&lt;/strong&gt; - Являются результатом проблем в программе&lt;/p&gt;
&lt;/p&gt;
 &lt;hr&gt;



 
 

 &lt;h4 id="3-расскажите-про-обрабатываемые-и-необрабатываемые-исключения"&gt;3. Расскажите про обрабатываемые и необрабатываемые исключения &lt;a href="#3-%d1%80%d0%b0%d1%81%d1%81%d0%ba%d0%b0%d0%b6%d0%b8%d1%82%d0%b5-%d0%bf%d1%80%d0%be-%d0%be%d0%b1%d1%80%d0%b0%d0%b1%d0%b0%d1%82%d1%8b%d0%b2%d0%b0%d0%b5%d0%bc%d1%8b%d0%b5-%d0%b8-%d0%bd%d0%b5%d0%be%d0%b1%d1%80%d0%b0%d0%b1%d0%b0%d1%82%d1%8b%d0%b2%d0%b0%d0%b5%d0%bc%d1%8b%d0%b5-%d0%b8%d1%81%d0%ba%d0%bb%d1%8e%d1%87%d0%b5%d0%bd%d0%b8%d1%8f" class="anchor"&gt;#&lt;/a&gt;&lt;/h4&gt;
 &lt;p&gt;&lt;p&gt;&lt;strong&gt;Checked&lt;/strong&gt; - Exception. Должны обрабатываться блоком catch, или описываться в сигнатуре метода (IOException)&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Unchecked&lt;/strong&gt; - Ошибки Error, а так же исключения времени выполнения (RuntimeException) и его наследниками. Могут не обрабатываться блоком catch и не быть описаны в сигнатуре метода&lt;/p&gt;</description></item><item><title>Дженерики</title><link>https://krios2146.github.io/java-backend-interview-prep/%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D1%8B-java/generics/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://krios2146.github.io/java-backend-interview-prep/%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D1%8B-java/generics/</guid><description>&lt;h2 id="дженерики"&gt;
 Дженерики
 &lt;a class="anchor" href="#%d0%b4%d0%b6%d0%b5%d0%bd%d0%b5%d1%80%d0%b8%d0%ba%d0%b8"&gt;#&lt;/a&gt;
&lt;/h2&gt;







 
 

 &lt;h4 id="1-что-такое-дженерики-для-чего-нужны"&gt;1. Что такое дженерики? Для чего нужны? &lt;a href="#1-%d1%87%d1%82%d0%be-%d1%82%d0%b0%d0%ba%d0%be%d0%b5-%d0%b4%d0%b6%d0%b5%d0%bd%d0%b5%d1%80%d0%b8%d0%ba%d0%b8-%d0%b4%d0%bb%d1%8f-%d1%87%d0%b5%d0%b3%d0%be-%d0%bd%d1%83%d0%b6%d0%bd%d1%8b" class="anchor"&gt;#&lt;/a&gt;&lt;/h4&gt;
 &lt;p&gt;&lt;p&gt;Дженерики - параметризованные типы в Java&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Что это? Позволяют создавать классы, интерфейсы и методы с типами, заданными как параметры&lt;/li&gt;
&lt;li&gt;Зачем нужны? Позволяют использовать один класс для разных типов данных (&lt;code&gt;List&amp;lt;String&amp;gt;&lt;/code&gt;, &lt;code&gt;List&amp;lt;Integer&amp;gt;&lt;/code&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Набор 
 &lt;a href="https://docs.oracle.com/javase/tutorial/java/generics/types.html"&gt;рекомендаций&lt;/a&gt; от Oracle о том, когда какие обозначения лучше использовать в дженериках:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;E&lt;/strong&gt; — element, для элементов параметризованных коллекций;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;K&lt;/strong&gt; — key, для ключей map-структур;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;V&lt;/strong&gt; — value, для значений map-структур;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;N&lt;/strong&gt; — number, для чисел;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;T&lt;/strong&gt; — type, для обозначения типа параметра в произвольных классах;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;S, U, V&lt;/strong&gt; и так далее — применяются, когда в дженерик-классе несколько параметров.&lt;/li&gt;
&lt;/ul&gt;
&lt;/p&gt;</description></item><item><title>Функциональные интерфейсы</title><link>https://krios2146.github.io/java-backend-interview-prep/%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D1%8B-java/functional-interface/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://krios2146.github.io/java-backend-interview-prep/%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D1%8B-java/functional-interface/</guid><description>&lt;h2 id="функциональные-интерфейсы"&gt;
 Функциональные интерфейсы
 &lt;a class="anchor" href="#%d1%84%d1%83%d0%bd%d0%ba%d1%86%d0%b8%d0%be%d0%bd%d0%b0%d0%bb%d1%8c%d0%bd%d1%8b%d0%b5-%d0%b8%d0%bd%d1%82%d0%b5%d1%80%d1%84%d0%b5%d0%b9%d1%81%d1%8b"&gt;#&lt;/a&gt;
&lt;/h2&gt;







 
 

 &lt;h4 id="1-что-такое-функциональный-интерфейс"&gt;1. Что такое функциональный интерфейс? &lt;a href="#1-%d1%87%d1%82%d0%be-%d1%82%d0%b0%d0%ba%d0%be%d0%b5-%d1%84%d1%83%d0%bd%d0%ba%d1%86%d0%b8%d0%be%d0%bd%d0%b0%d0%bb%d1%8c%d0%bd%d1%8b%d0%b9-%d0%b8%d0%bd%d1%82%d0%b5%d1%80%d1%84%d0%b5%d0%b9%d1%81" class="anchor"&gt;#&lt;/a&gt;&lt;/h4&gt;
 &lt;p&gt;Функциональный интерфейс – интерфейс с одним абстрактным методом. Помимо одного абстрактного, может содержать любое количество статических и дефолтных методов.&lt;/p&gt;
 &lt;hr&gt;



 
 

 &lt;h4 id="2-для-чего-нужна-аннотация-functionalinterface"&gt;2. Для чего нужна аннотация @FunctionalInterface &lt;a href="#2-%d0%b4%d0%bb%d1%8f-%d1%87%d0%b5%d0%b3%d0%be-%d0%bd%d1%83%d0%b6%d0%bd%d0%b0-%d0%b0%d0%bd%d0%bd%d0%be%d1%82%d0%b0%d1%86%d0%b8%d1%8f-functionalinterface" class="anchor"&gt;#&lt;/a&gt;&lt;/h4&gt;
 &lt;p&gt;Для гарантии того, что интерфейс является функциональным. Она не даст создать еще один абстрактный метод&lt;/p&gt;
 &lt;hr&gt;



 
 

 &lt;h4 id="3-какие-встроенные-функциональные-интерфейсы-вы-знаете"&gt;3. Какие встроенные функциональные интерфейсы вы знаете? &lt;a href="#3-%d0%ba%d0%b0%d0%ba%d0%b8%d0%b5-%d0%b2%d1%81%d1%82%d1%80%d0%be%d0%b5%d0%bd%d0%bd%d1%8b%d0%b5-%d1%84%d1%83%d0%bd%d0%ba%d1%86%d0%b8%d0%be%d0%bd%d0%b0%d0%bb%d1%8c%d0%bd%d1%8b%d0%b5-%d0%b8%d0%bd%d1%82%d0%b5%d1%80%d1%84%d0%b5%d0%b9%d1%81%d1%8b-%d0%b2%d1%8b-%d0%b7%d0%bd%d0%b0%d0%b5%d1%82%d0%b5" class="anchor"&gt;#&lt;/a&gt;&lt;/h4&gt;
 &lt;p&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;Predicate&amp;lt;T&amp;gt;&lt;/code&gt; – принимает объект типа T и проверяет соблюдение некоторого условия и возвращает результат типа Boolean&lt;/p&gt;</description></item><item><title>Stream API</title><link>https://krios2146.github.io/java-backend-interview-prep/%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D1%8B-java/stream-api/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://krios2146.github.io/java-backend-interview-prep/%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D1%8B-java/stream-api/</guid><description>&lt;h2 id="stream-api"&gt;
 Stream API
 &lt;a class="anchor" href="#stream-api"&gt;#&lt;/a&gt;
&lt;/h2&gt;







 
 

 &lt;h4 id="1-что-такое-stream-api-и-для-чего-нужны-stream"&gt;1. Что такое Stream API и для чего нужны Stream? &lt;a href="#1-%d1%87%d1%82%d0%be-%d1%82%d0%b0%d0%ba%d0%be%d0%b5-stream-api-%d0%b8-%d0%b4%d0%bb%d1%8f-%d1%87%d0%b5%d0%b3%d0%be-%d0%bd%d1%83%d0%b6%d0%bd%d1%8b-stream" class="anchor"&gt;#&lt;/a&gt;&lt;/h4&gt;
 &lt;p&gt;&lt;p&gt;Представляет собой последовательность элементов, над которой можно производить различные операции. Его задача - упростить работу с наборами данных , в частности, упростить операции фильтрации, сортировки и другие манипуляции данными&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;С какими типами данных может работать?&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Объектами&lt;/strong&gt; — &lt;code&gt;Stream&amp;lt;T&amp;gt;&lt;/code&gt;, где &lt;code&gt;T&lt;/code&gt; — любой ссылочный тип (например, &lt;code&gt;String&lt;/code&gt;, &lt;code&gt;Integer&lt;/code&gt;, пользовательские классы).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Примитивами&lt;/strong&gt; — существуют специализированные стримы:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;IntStream&lt;/strong&gt; для работы с &lt;code&gt;int&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;LongStream&lt;/strong&gt; для работы с &lt;code&gt;long&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;DoubleStream&lt;/strong&gt; для работы с &lt;code&gt;double&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Для других примитивов стримы не предусмотрены, их нужно упаковывать в объекты-обёртки (например, &lt;code&gt;Byte&lt;/code&gt; для &lt;code&gt;byte&lt;/code&gt;).&lt;/p&gt;</description></item><item><title>Многопоточность</title><link>https://krios2146.github.io/java-backend-interview-prep/%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D1%8B-java/multithreading/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://krios2146.github.io/java-backend-interview-prep/%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D1%8B-java/multithreading/</guid><description>&lt;h2 id="многопоточность"&gt;
 Многопоточность
 &lt;a class="anchor" href="#%d0%bc%d0%bd%d0%be%d0%b3%d0%be%d0%bf%d0%be%d1%82%d0%be%d1%87%d0%bd%d0%be%d1%81%d1%82%d1%8c"&gt;#&lt;/a&gt;
&lt;/h2&gt;







 
 

 &lt;h4 id="1-что-такое-многопоточность"&gt;1. Что такое многопоточность? &lt;a href="#1-%d1%87%d1%82%d0%be-%d1%82%d0%b0%d0%ba%d0%be%d0%b5-%d0%bc%d0%bd%d0%be%d0%b3%d0%be%d0%bf%d0%be%d1%82%d0%be%d1%87%d0%bd%d0%be%d1%81%d1%82%d1%8c" class="anchor"&gt;#&lt;/a&gt;&lt;/h4&gt;
 &lt;p&gt;&lt;p&gt;Возможность программы выполнять несколько блоков одновременно&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;Что такое поток?&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Поток&lt;/strong&gt; (thread) — это независимая последовательность выполнения инструкций в рамках одной программы. Потоки позволяют выполнять несколько задач одновременно, используя возможности многоядерных процессоров.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Основные характеристики потока&lt;/strong&gt;:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Поток выполняется в рамках одного процесса и использует его память.&lt;/li&gt;
&lt;li&gt;У каждого потока есть своё выполнение&lt;/li&gt;
&lt;li&gt;Имеет доступ к общей памяти.&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;Зачем нужны потоки?&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Потоки нужны для реализации &lt;strong&gt;многозадачности&lt;/strong&gt;, то есть выполнения нескольких операций одновременно. Это особенно полезно для:&lt;/p&gt;</description></item><item><title>ООП</title><link>https://krios2146.github.io/java-backend-interview-prep/%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D1%8B-java/oop/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://krios2146.github.io/java-backend-interview-prep/%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D1%8B-java/oop/</guid><description>&lt;h2 id="ооп"&gt;
 ООП
 &lt;a class="anchor" href="#%d0%be%d0%be%d0%bf"&gt;#&lt;/a&gt;
&lt;/h2&gt;







 
 

 &lt;h4 id="1-что-такое-ооп"&gt;1. Что такое ООП? &lt;a href="#1-%d1%87%d1%82%d0%be-%d1%82%d0%b0%d0%ba%d0%be%d0%b5-%d0%be%d0%be%d0%bf" class="anchor"&gt;#&lt;/a&gt;&lt;/h4&gt;
 &lt;p&gt;&lt;p&gt;ООП - методология программирования, центральное место в которой занимает объект. Программа же в целом - совокупность объектов (экземпляров классов). Класс в свою очередь представляет собой шаблон и состоит из:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Полей&lt;/li&gt;
&lt;li&gt;Конструктора&lt;/li&gt;
&lt;li&gt;Методов&lt;/li&gt;
&lt;/ul&gt;&lt;/p&gt;
 &lt;hr&gt;



 
 

 &lt;h4 id="2-плюсы-и-минусы-ооп"&gt;2. Плюсы и минусы ООП &lt;a href="#2-%d0%bf%d0%bb%d1%8e%d1%81%d1%8b-%d0%b8-%d0%bc%d0%b8%d0%bd%d1%83%d1%81%d1%8b-%d0%be%d0%be%d0%bf" class="anchor"&gt;#&lt;/a&gt;&lt;/h4&gt;
 &lt;p&gt;&lt;p&gt;Плюсы:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Делим программу на «модули»-классы, ОБЪЕКТЫ каждый из которых делает свою часть работы.&lt;/li&gt;
&lt;li&gt;Код можно повторно использовать в любом месте программы, это экономит время (не нужно писать однотипные функции для разных сущностей).&lt;/li&gt;
&lt;li&gt;«Более естественная» декомпозиция ПО существенно облегчает его разработку (код легко читается и быстро пишется).&lt;/li&gt;
&lt;li&gt;Возможность создавать расширяемые системы (extensible systems), именно это отличает ООП от традиционных методов программирования.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Минусы:&lt;/p&gt;</description></item></channel></rss>