Java Interview questions and Tests

[2016-12-21]

Bank @A@

  • Do you know PL/SQL
  • What Do you preffer SPRING of JEE ?
  1. Privitive types in Java. Where is located variables of primitive types ?
    http://www.quizful.net/interview/java/java-local-variables

    Если вы создаете и присваиваете локальную переменную примитивного типа, то все данные полностью хранятся на стеке. Если же вы создаете объект, то ссылка хранится на стеке, сам же объект уже создается в куче. При создании массива примитивных типов происходит то же самое что и с объектами: ссылка на массив храниться на стеке, а сам массив в куче.Однако начиная с Java 6 Update 14 можно включить так называемый Escape-Analysis, который будет размещать объекты не покидающие метода тоже на стеке. Сделать это можно выставив параметр -XX:+DoEscapeAnalysis. Но он будет работать только в -server моде. В Java 6 Update 18 данную опцию отключили, а в Java 6 Update 21 вернули и сделали по умолчанию. Таким образом в вашей JVM запущенной на сервере данная оптимизация уже работает, если вы используете java6u21 и выше.
    Размещение объектов и примитивов на стеке несказанно упрощает жизнь сборщику мусора. Пользуйтесь этим - создавайте небольшие маложивущие immutable объекты вместо часто изменяемых долгоживущих
  2. JPA. There is stateless beans and statefull – what is difference ?
  3. JSF. What is living circle of JSF ?

[2017-03-15]

Основные вопросы (которые вспомнил) :

  • Начали с философии и теории : Какие парадигмы знаете. А что такое парадигма программирования

     1) ООП 2) Функциональное программирование ... 
  • Окей : возьмем ООП. в рамках ООП рассмотрим объект КРУЖКА. (такой объект из реайльного мира). Опишите ООП

     PIE (Polymorphym, Incapsulation, Enxeritance ).
    Кружка. 
    Родитель пусть будет емкость (хотя перед глазами маячила БАНКА 3-5 литров ))) ).
    Есть поля ЕМКОСТЬ, НАЗАНАЧЕНИЕ. 
    

    пример полиморфизма – когда еще объект КОРЗИНА. “Назначение” зависит от объекта с которым работаем (для К это мусор, для КРУЖКИ это ЧАЙ)

  • Java: Object. Основные методы которые есть.

  • Java: Object. Зачем нужен equals. Что будет если мы его переопределим. Что насчет hashcode ? Если hashcode Будет всегда один (ответ про бакеты в МАПе и LinkedList в строчку )

  • Concurent: как получается DEADLOCK (если сделать СИНХРО на разных уровнях в объекте Один на ГЕТТЕРЕ второый в другом месте выше/ниже).

  • ANDROID: Что такое INTENT. Какие могут быть (Явные / неявные – и чем же отличаются)? Для чего они нужны.

  • ANDROID: манифест – что содержит. Что в нем описывается ? (ответил наверное на 10-20% : ACTIVITY, framework version, PERMITIONS. )

  • ANDROID: почему виснет АРР ? (про главный активити) Как его можно повесить ? как избаиться от такого? (про AsyncTask, Thread, ExecServices; Как работает AsyncTask. Очередность исполнения ? все сразу или КАК ТО ПО ДРУГОМУ ?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# Your task is to make sure that this mapper code does not fail on corrupt data lines,
# but instead just ignores them and continues working
import sys

def mapper():
    # read standard input line by line
    for line in sys.stdin:
        # strip off extra whitespace, split on tab and put the data in an array
        data = line.strip().split("\t")

        # This is the place you need to do some defensive programming
        # what if there are not exactly 6 fields in that line?
        # YOUR CODE HERE
        if len(data)==6 :
       
            # this next line is called 'multiple assignment' in Python
            # this is not really necessary, we could access the data
            # with data[2] and data[5], but we do this for conveniency
            # and to make the code easier to read
            date, time, store, item, cost, payment = data
       
            # Now print out the data that will be passed to the reducer
            print "{0}\t{1}".format(store, cost)
       
       
test_text = """2013-10-09\t13:22\tMiami\tBoots\t99.95\tVisa
2013-10-09\t13:22\tNew York\tDVD\t9.50\tMasterCard
2013-10-09 13:22:59 I/O Error
^d8x28orz28zoijzu1z1zp1OHH3du3ixwcz114<f
1\t2\t3"""


# This function allows you to test the mapper with the provided test string
def main():
    import StringIO
    sys.stdin = StringIO.StringIO(test_text)
    mapper()
    sys.stdin = sys.__stdin__

Error with MySQL DATETIME ‘0000-00-00 00:00:00’ can not be represented as java.sql.Timestamp

When I started work with MySQL from Hibernate I got exceptions with approximate content :
… ‘0000-00-00 00:00:00’ …. can not be represented as java.sql.Timestamp

My solution for this bug was following :
As I used bean datasource :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<beans
   xmlns="http://www.springframework.org/schema/beans"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">

 
<bean
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="location">
        <!-- <value>/WEB-INF/database/database.properties</value> -->
        <value>/META-INF/spring/database/database.properties</value>
    </property>
</bean>
 
<bean id="dataSource"
        class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <property name="driverClassName" value="${jdbc.driverClassName}" />
    <property name="url" value="${jdbc.url}?zeroDateTimeBehavior=convertToNull" />
    <property name="username" value="${jdbc.username}" />
    <property name="password" value="${jdbc.password}" />
</bean>
 
</beans>

I added into property URL :

Because I added also in bean id=”sessionFactory” such property :

1
2
3
4
5
6
7
        <property name="hibernateProperties">
            <props>
.....
                <!--  -->
                <prop key="hibernate.connection.zeroDateTimeBehavior">convertToNull</prop>
            </props>
        </property>

that does not help to resolve exception.

YMaps sample broken dashed line

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
< !DOCTYPE html>

<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Примеры. Размещение карты на странице.</title>
    <!--
       Подключаем API карт
       Параметры:
         - load=package.standard - основные компоненты;
          - lang=ru-RU - язык русский.
   -->
    <script src="http://api-maps.yandex.ru/2.0/?load=package.full&lang=ru-RU" type="text/javascript"></script>

<script type="text/javascript">
var myMap;

// Дождёмся загрузки API и готовности DOM.
ymaps.ready(init);

function init () {
    // Создание экземпляра карты и его привязка к контейнеру с
    // заданным id ("map").
    var myMap = new ymaps.Map('map', {
        // При инициализации карты обязательно нужно указать
        // её центр и коэффициент масштабирования.
        center:[55.76, 37.64], // Москва
        zoom:17
    });
   
    // Ломаная
    var myPolyline = new ymaps.Polyline([
        // Координаты вершин ломаной.
        [55.7599, 37.6375],
        [55.759800, 37.6402],
        [55.7606, 37.6403]
    ], {
        hintContent: "ОСПД-8А"
    }, {
        strokeWidth: 5, // ширина линии
        draggable: true,
        // Первой цифрой задаем длину штриха. Второй цифрой задаем длину разрыва.
        strokeStyle: '2 2'
    });
   
    //alert(1);
    myMap.geoObjects.add(myPolyline);
   
    document.getElementById('destroyButton').onclick = function () {
     
        // Для уничтожения используется метод destroy.
        myMap.destroy();
    };

}
</script>
</head>

<body>
    <div id="map" style="width:600px; height:300px"></div>
    <input type="button" id="destroyButton" value="Удалить карту"/>
</body>

</html>

Continue reading

ANDROID ECLIPSE

The lecture is suitable for people with background in software development. It is highly recommended to come with your laptop already installed with the following (the installation takes time and you won’t have that time during the lecture):
1. Java Development Kit (avoid Java 7 and install JDK 6) – www.oracle.com
2. Eclipse Classic – www.eclipse.org
3. Android SDK – www.android.com
4. ADT (Android Development Tools for Eclipse) – www.android.com
You can find a post with a short video clip that explains these installations at http://bit.ly/SW0rZ9.

http://abelski-android-jumpstart.eventbrite.com/

WIN XP USB (на заметку)

Как сделать USB из этой сборки:

1.Форматируем флешку программой PEtoUSB (качаем здесь)
2.Копируем содержимое CD (или iso-образа) на флешку.
3.Всё содержимое папки I386 переносим в корень флешки и убиваем пустую папку I386.
4.Переименовываем файл SETUPLDR.BIN в ntldr.
5.Корректируем последнюю строку в файле WINNT.SIF. Должно быть:

[SetupData]
BootDevice=”ramdisk(0)”
BootPath=”i386System32″
OsLoadOptions=”/noguiboot /fastdetect /minint /rdexportashd /rdpath=BootSDI.img”

SPRING MVC SAMPLE WizardForm Annotation

http://stackoverflow.com/questions/4623667/abstractwizardformcontroller-using-annotated-controllers

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
@Controller
@RequestMapping("/wizard.form")
@SessionAttributes("command")
public class WizardController {

    /**
     * The default handler (page=0)
     */

    @RequestMapping
    public String getInitialPage(final ModelMap modelMap) {
        // put your initial command
        modelMap.addAttribute("command", new YourCommandClass());
        // populate the model Map as needed
        return "initialView";
    }

    /**
     * First step handler (if you want to map each step individually to a method). You should probably either use this
     * approach or the one below (mapping all pages to the same method and getting the page number as parameter).
     */

    @RequestMapping(params = "_step=1")
    public String processFirstStep(final @ModelAttribute("command") YourCommandClass command,
                                   final Errors errors) {
        // do something with command, errors, request, response,
        // model map or whatever you include among the method
        // parameters. See the documentation for @RequestMapping
        // to get the full picture.
        return "firstStepView";
    }

    /**
     * Maybe you want to be provided with the _page parameter (in order to map the same method for all), as you have in
     * AbstractWizardFormController.
     */

    @RequestMapping(method = RequestMethod.POST)
    public String processPage(@RequestParam("_page") final int currentPage,
                              final @ModelAttribute("command") YourCommandClass command,
                              final HttpServletResponse response) {
        // do something based on page number
        return pageViews[currentPage];
    }

    /**
     * The successful finish step ('_finish' request param must be present)
     */

    @RequestMapping(params = "_finish")
    public String processFinish(final @ModelAttribute("command") YourCommandClass command,
                                final Errors errors,
                                final ModelMap modelMap,
                                final SessionStatus status) {
        // some stuff
        status.setComplete();
        return "successView";
    }

    @RequestMapping(params = "_cancel")
    public String processCancel(final HttpServletRequest request,
                                final HttpServletResponse response,
                                final SessionStatus status) {
        status.setComplete();
        return "canceledView";
    }

}