Home

Awesome

Full-stack Developer Interview Questions and Answers

<a name='toc'>Table of Contents</a>

[⬆] <a name='architecture'>Architecture:</a>

RuleDescription
Single responsibility principleA module should be responsible to one, and only one, actor.
Open/closed principleA software artifact should be open for extension but closed for modification.
Liskov substitution principleIt should be possible to substitute base class with derived class.
Interface segregation principleMany client-specific interfaces are better than one general-purpose interface.
Dependency inversion principleDepend upon Abstractions but not on concretions. This means that each module should be separated from other using an abstract layer which binds them together. Source code dependency points in the opposite direction compared to the flow of control.

[⬆] <a name='concurrency'>Concurrency:</a>

[⬆] <a name='java'>Java:</a>

[⬆] <a name='general'>General Questions:</a>

[⬆] <a name='web'>WEB:</a>

[⬆] <a name='sql'>SQL:</a>

Isolation_level\AnomalyLost_update (because of rollback)Dirty_readNon_repeatable_reads second_lost_updatePhantomsWrite_skew
Read Uncommitted-may occurmay occurmay occurmay occur
Read Committed--may occurmay occurmay occur
Repeatable Read---may occurmay occur
Snapshot----may occur
Serializable-----

[⬆] <a name='nosql'>NoSQL:</a>

[⬆] <a name='transactions'>Transactions:</a>

[⬆] <a name='scalability'>Scalability:</a>

[⬆] <a name='load-balancing'>Load balancing:</a>

[⬆] <a name='cloud-computing'>Cloud computing:</a>

[⬆] <a name='distributed'>Distributed:</a>

1 Read-write registers
2 Test-and-set, swap, fetch-and-add, queue, stack
⋮ ⋮
∞ Augmented queue, compare-and-swap, sticky byte

[⬆] <a name='cache'>Cache:</a>

[⬆] <a name='networking'>Networking:</a>

[⬆] <a name='os'>Operating system:</a>

[⬆] <a name='compilers'>Compilers:</a>

[⬆] <a name='cpp'>C++:</a>

[⬆] <a name='javascript'>Javascript:</a>

[⬆] <a name='python'>Python:</a>

[⬆] <a name='go'>Go:</a>

[⬆] <a name='codewriting'>Codewriting:</a>

int binarySearch(int[] a, int fromInclusive, int toExclusive, int key) {
    int low = fromInclusive;
    int high = toExclusive - 1;
    while (low <= high) {
        int mid = (low + high) >>> 1;
        int midVal = a[mid];
        if (midVal < key)
            low = mid + 1;
        else if (midVal > key)
            high = mid - 1;
        else
            return mid; // key found
    }
    return -(low + 1); // key not found
}
void qSort(int[] a, int fromInclusive, int toInclusive) {
    int i = fromInclusive;
    int j = toInclusive;
    if (i >= j) return;
    int separator = a[i + random.nextInt(j - i + 1)];
    do {
        while (a[i] < separator) ++i;
        while (a[j] > separator) --j;
        if (i > j) break;
        int t = a[i];
        a[i] = a[j];
        a[j] = t;
        ++i;
        --j;
    } while (i <= j);
    qSort(a, fromInclusive, j);
    qSort(a, i, toInclusive);
}

[⬆] <a name='functional-programming'>Functional programming:</a>

[⬆] <a name='reactive-programming'>Reactive programming:</a>

[⬆] <a name='git'>Git:</a>

[⬆] <a name='devOps'>DevOps:</a>

[⬆] <a name='qa'>QA:</a>

[⬆] <a name='agile'>Agile:</a>

[⬆] <a name='algorithms'>Algorithms:</a>

[⬆] <a name='other'>Other:</a>

[⬆] <a name='machine-learning'>Machine learning:</a>

equation

[⬆] <a name='big-data'>Big Data:</a>

[⬆] <a name='image-processing'>Image processing:</a>

[⬆] <a name='cryptography'>Cryptography:</a>

select 2 primes: p,q
n = p*q
phi(n) = (p-1)*(q-1)
select 1<e<phi(n), gcd(e,phi(n))=1
d=e^-1 mod phi(n)
(e,n) - public key
(d,n) - private key
c = m^e mod n
m = c^d mod n = m^(e*d) mod n = m^(e*d mod phi(n)) mod n = m

[⬆] <a name='security'>Security:</a>

[⬆] <a name='android'>Android:</a>

[⬆] <a name='books'>Books:</a>

C++ programming
Java programming
Algorithms
Concurrent programming
Statistics
Machine Learning
Digital Signal Processing
Digital Image Processing
Other