Интервью СберТех

[2017-09]

СберТех онлайн

  1. hashcode & equals какие требования к реализации, контракты
  2. в чем разница между LinkedList vs ArrayList
  3. Ну расскажите как работает ArrayList (Вставялет, Удаляет)
  4. Какую вы видите проблему в коде ( кусок кода, synchronysed in synhronised внутри Throw new SomeException … Больше ничего я не увидел)
  5. есть класс (суть что это LinkedList в одну сторону), напишите реверс (покажите код) пример кода такой :
    https://www.java2blog.com/how-to-reverse-linked-list-in-java/

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    public void reverseLinkedlist()
    {
        /*
         * Have three nodes i.e previousNode,currentNode and nextNode
     When currentNode is starting node, then previousNode will be null
     Assign currentNode.next to previousNode to reverse the link.
     In each iteration move currentNode and previousNode by  1 node.
         */


        Node previousNode = null;
        Node currentNode = head;
        while (currentNode != null)
        {
            Node nextNode = currentNode.next;
            currentNode.next = previousNode;
            previousNode = currentNode;
            currentNode = nextNode;
        }
        head = previousNode;
    }
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
        LinkedListNode pointer = head;
        LinkedListNode prev = null, curr = null;

        /* Pointer variable loops through the LL */
        while(pointer != null)
        {
            /* Proceed the pointer variable. Before that, store the current pointer. */
            curr = pointer; //          
            pointer = pointer.next;        

            /* Reverse the link */
            curr.next = prev;

            /* Current becomes previous for the next iteration */
            prev = curr;            
        }

        System.out.println(prev.printForward());
  6. 10ток классов коллекций Vector, LinkedList, ArrayList, HashSet, TreeSet, … какой из них O(LgN) ?
    TreeSet is O(LgN)

Maven Buil section for WAR

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
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <!-- <version>2.5.1</version> -->
                <configuration>
                    <source>1.6</source>
                    <target>1.6</target>
                    <debug>true</debug>
                    <debuglevel>lines,vars,source</debuglevel>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <configuration>
                    <warName>${project.artifactId}</warName>
                    <webXml>src/main/webapp/WEB-INF/web.xml</webXml>
                    <webResources>
                        <resource>
                            <directory>src/main/webapp/</directory>
                            <includes>
                                <include>index.html</include>
                            </includes>
                        </resource>
                        <resource>
                            <directory>src/main/webapp/WEB-INF</directory>
                            <includes>
                                <include>jboss-web.xml</include>
                            </includes>
                            <targetPath>WEB-INF</targetPath>
                        </resource>
                    </webResources>
                </configuration>
            </plugin>
        </plugins>
    </build>

Default value in HIBERNATE Database independently

How to initialize Field in Hibernate @Entity without using @Column( columnDefenition=”” ) ?
WHY?
Because columnDefinition is DB dependently option.

Imagine you have some @Entity :

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
    @Column( name = "insstmp", nullable = false )
    @Type( type = "org.joda.time.contrib.hibernate.PersistentDateTime" )
    private DateTime insstmp;// date without time

    @Column( name = "updstmp", nullable = false )
    @Type( type = "org.joda.time.contrib.hibernate.PersistentDateTime" )
    private DateTime updstmp;// date without time

    /**
     * We set default value in case if the value is not set yet.
     */

    @PrePersist
    public void prePersist() {

        if ( this.updstmp == null ) {
            // Default value
            this.updstmp = getUpdstmp();
        }
        if ( this.insstmp == null ) {
            // Default value
            this.insstmp = getInsstmp();
        }
    }


    /**
     * Getter.
     *
     * @return the insstmp
     */

    public final DateTime getInsstmp() {

        return insstmp == null ? new DateTime( DateTimeZone.UTC ) : insstmp;
    }

    /**
     * Getter.
     *
     * @return the updstmp
     */

    public final DateTime getUpdstmp() {

        return updstmp == null ? new DateTime( DateTimeZone.UTC ) : updstmp;
    }

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. Очередность исполнения ? все сразу или КАК ТО ПО ДРУГОМУ ?


2017 summer
Контора занимается видео контентом,
помню вопросы задавали про а как вам после крупной конторы будет работаться в нашей мелкой ? не будет ли у вас “ломки” и прочий бред.
Интересный вопрос был, сначала я как всегда наивно подумал: какая то хрень которая у них в работе используется, а сегодня натолкнулся на обычные развлекушки для тех у кого работы мало ( у тех у кого работы мало они обычно лазят и ищут всякие такие развлекухи, а у тех у кого её в очереди стоит разгребают обычные и тупые задачи обычно … ) :
How to detect loop in a linked list in java with example


2017-JUL
Интервью COMTEK


2017-SEP
интервью сбертех

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__

Java String Anagrams

Problem
Two strings and are called anagrams if they consist same characters, but may be in different orders. So the list of anagrams of is .

Given two strings, print Anagrams if they are anagrams, print Not Anagrams if they are not. The strings may consist at most English characters; the comparison should NOT be case sensitive.

This exercise will verify that you can sort the characters of a string, or compare frequencies of characters.

Sample Input 0

anagram
margana

Sample Output 0

Anagrams

Sample Input 1

anagramm
marganaa
Sample Output 1:

Not Anagrams

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
    /**
     * Two strings and are called anagrams if they consist same characters, but may be in different orders. So
     * the list of anagrams of is .
     *
     * Given two strings, print Anagrams if they are anagrams, print Not Anagrams if they are not. The strings
     * may consist at most English characters; the comparison should NOT be case sensitive.
     *
     * This exercise will verify that you can sort the characters of a string, or compare frequencies of
     * characters.
     *
     * @param a
     * @param b
     *
     * @return
     */

    static boolean isAnagram( String a, String b ) {

        Collection<String> s1 = new ArrayList<>();

        for (int i = 0; i < a.length(); i++) {
            s1.add( String.valueOf( a.charAt( i ) ).toUpperCase() );
        }

        boolean result = true;
        for (int i = 0; i < b.length(); i++) {
            String charAt = String.valueOf( b.charAt( i ) ).toUpperCase();
            if ( !s1.contains( charAt ) ) {
                result = false;
            } else {
                s1.remove( charAt );
                //System.out.print( charAt + " : " );
                //System.out.println( s1 );
            }
        }

        return s1.size() > 0 ? false : result;
    }