Список вопросов от эстаунд

Java core:

1. What is the difference between Integer and int? В чем разница между Integer и int?
Integer – это объектный тип, int – это примитивный тип.
Integer – это объектная оболочка над int.
В целом понятно, что Integer надо использовать только тогда, когда без него не обойтись. Один из таких примеров — это параметризованные типы (generics), к примеру, стандартные коллекции. Но и тут надо быть аккуратным, чтобы использовать память разумно.
Недостаток примитивных типов — это отсутствие методов у них, этот недостаток решается объектными оболочками над примитивными типами.
Ссылки:
Хабр
тыц

2. What is boxing and unboxing? Что такое упаковка и распаковка?
Создание объекта-оболочки из переменной примитивного типа называется упаковкой (boxing), а получение значения примитивного типа из объекта-оболочки — распаковкой. Объектам-оболочкам можно присваивать значения примитивных типов, а переменным примитивных типов — значения переменных-оболочек, при этом при необходимости автоматически создаются объекты-оболочки с соответствующими значениями (автоупаковка) или наоборот, примитивные значения извлекаются из оболочек (автораспаковка):

тыц
Хабр

3. Can the class have both methods: void foo(Integer a); void foo(int a);? Может ли класс иметь оба метода: void foo (Integer a); void foo (int a) ;?

Да может. Такой метод будет перегружаться.

4. What is mutable and immutable class? Provide examples (String, Integer – immutable, StringBuilder – mutable). Что такое изменяемый и неизменяемый класс? Укажите примеры (String, Integer — immutable (неизменяемый), StringBuilder — mutable (изменяемый)?

Immutable объект — это объект, состояние которого после создания невозможно изменить. В случае Java это значит что все поля экземпляра у класс отмечены как final и являются примитивами или тоже immutable типами.

После создания экземпляра ImmutablePoint его модификация невозможна.
Простейший пример immutable класса из JDK это String. Любые методы, которые вы вызовите на строке (например description.toLowerCase()) вернут новую строку, а не модифицируют исходную.
Пример mutable класс из JDK — Date. Например myDate.setHours(x) модифицирует сам экземпляр myDate!
В случае многопоточного программирования преимущества immutable классов очевидны: после создания объекты можно передавать другим потокам и они всегда будут в актуальном состоянии. Т.е. вам не надо проверять не устарело ли состояние вашего экземпляра и не модифицировал ли его другой поток пока вы с ним работаете. Например, у вас есть метод bill(Date endDate), в нём вы наивно проверяете соответствие endDate каким-то предварительным условиям и начинаете с ней работать. В этот момент другой поток может изменить endDate, например установит её глубоко в прошлое. Последствия могут быть самыми удивительными.

Тыц

5. What are StringBuilder and StringBuffer used for? Для чего используются StringBuilder и StringBuffer?

Класс String является immutable — Вы не можете модифицировать объект String, но можете заменить его созданием нового экземпляра. Создание нового экземпляра обходится дороговато:

Кусок кода, в примере выше создаст 99 новых объектов String, 98 из которых будут тут же откинуты. Создание новых объектов неэффективно.
StringBuffer/StringBuilder

Класс StringBuffer является mutable — использовать StringBuffer или StringBuilder следует тогда, когда вы хотите модифицировать содержимое. StringBuilder был добавлен в пятой джаве и он во всем идентичен классу StringBuffer, за исключением того, что он не синхронизирован, что делает его значительно шустрее. Но цена скорости — небезопасное поведение в мультипоточной среде.

Вышеуказанный код создает только два новых объекта, StringBuffer и строковую константу, которая возвращается. StringBuffer расширяется по мере надобности, что, в свою очередь дороговато, так что лучше инициализировать StringBuffer корректным значением размера.

What the keyword final means? Where can it be used? (Final field or variable – after initialization no further changes are allowed. Final class cannot be subclassed. Final method cannot be overriden. Usage: on class, method, field, variable.)
What does final on static method means?
What is the difference between abstract class and interface?
What is the difference between overriding and overloading?
What the difference between hiding and overriding?
What do terms up-casting and down-casting mean?
Can interface have static constants?
Where is it better to specify static constants: interface or class?
How is it better to declare constants than using final static fields? Why?
Interfaces without methods – what can they be used for? What else can be used for the same reason? (Annotations)
Where annotations can be placed? What retention policies do annotations have?
If you have a big class hierarchy, what can be used to reduce it? (Composition)
What is the decorator pattern? Where it is used among Java classes? (IO classes)
What is serialization? How to serialize a class? (implements Serializable or Externalizable)
How to avoid some field from serialization?
How to correctly deserialize singleton?
What is assert used for? Where is it advisable to use it?
What is passing parameters by reference and by value? ( Everything in Java is passed by value. primitives are passed by value. Object references are passed by value)
COPY of the object reference are passed as a parameter to function, as a result if you set NULL to variable in function — this won’t affect on variable in main program).
Overriding equals() hashCode() methods.
Java 8 Streams
General programming 
What data structure will you choose for an application, that needs to supply cancellation of commands (stack)
What is the difference between queue and stack?
How to output sequence of the numbers without any cycles (while, for..) (It can be done with a recursion)
Threads and Concurrency
Two ways of creating thread. Why would use one or another (1) Subclass Thread class; 2) Implement Runnable and pass the  object to the Thread constructor or Executor. When 2, then we can subclass from something other).
What does the keyword volatile means?
What is deadlock? How to avoid deadlock?
What is race conditions? How to avoid race conditions?
What is the object of synchronization when synchronized keyword used on static method? On normal method?
What are the functions wait, notify, notifyAll used for?
What is difference between wait() and sleep() methods? (Wait method can be interrupted)
What are join(), yield() methods used for?
What is BlockingQueue used for?
What classes represent synchronized collections?
What is the difference between livelock and deadlock?
For all these questions I would recommend to read the book «Java Concurrency in Practice
by Brian Goetz».
Patterns (definition, example of usage)
Singleton. Why should be synchronized?
Builder, Factory, Factory method, Strategy, Template method, Decorator, Bridge, Observer, Listener etc.
What is the difference between Decorator and Proxy?
JDBC and Database access
What is JDBC?
How to obtain a connection to database?
Types of join query (Left, Right, …)
What’s the difference between Statement and PreparedStatement?
What is transaction? What properties does transaction have? How to start transaction in JDBC?
What isolation level can transaction have?
What types of JOIN-s and SQL query can have? How do they differ?
You have Publishers and Books tables. Each book has a foreign key on publisher. Write SQL query that will return all publishers that do not have books. (two variants: two select and NOT IN; with LEFT JOIN).
Spring Framework
What is Spring? What is it used for?
What are main blocks of Spring?
What is dependency injection? Why is it important?
What are aspects? Where can they be used?
You can find information in any book about Spring framework.
 
J2EE
What is JMS? Two types of JMS conversation.
What is EJB? Three types of EJB.
 
SAX vs DOM vs StAX parsers
Enterprise Patterns
JSP/Servlets/JSTL
Does servlet thread-safe or it is necessary to write a synchronized code? (not thread safe, one servlet is created for the whole web-server and processes all requests)
What is JSTL? Some tags example.
Refactoring
How will you change your application that have a lot of inheritance (remove inheritance and replace it with composition)
Performance tuning strategies
Threads
Concurrent vs Synchronized collections. What is the difference ?
ConcurrentHashMap. How does it allows to improve performance?
Runnable vs Callable Interfaces
How to share data between threads?
How to avoid deadlocks?
Synchronized vs reentrant lock
CountDownLatch, Semaphor, Exchanger
Servlets
What is difference between GenericServlet and HttpServlet?
Spring
types of auto wiring
what is IoC
Performance
performance problems in java application
Database problems, that mostly have to do with persistence configuration, caching or database connection thread pool configuration.
Memory problems, that usually are garbage collection misconfiguration or memory leaks.
Concurrency problems, and basically deadlocks, gridlocks and thread pool configuration problems.
performance tuning strategies
event driven architecture.
Testing
Unit vs Integration vs Functional vs Acceptance testing
TDD vs BDD vs Unit Testing

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *