Software Engineer Interview
Software Engineer Interview
Javascript/es6
https://docs.google.com/document/d/1ZqWeTBRcnYMpjBYp3lcAf1ou4bQkoENzqcvS
16GHgqw/edit?tab=t.0#heading=h.brc5vz1c4c0
explainthis.io: https://www.explainthis.io/en/swe/js-zero-point-one-plus-
zero-point-two
System design:
https://docs.google.com/document/d/1nc75sQHkKNe4iEscJJAMeXPVS
k3ISngh_9Te1ZDgV8g/edit?tab=t.0#heading=h.dtal9bylx2ff
● Curing: Currying
is a technique of transforming function with
multiple arguments into a sequence of functions, each with a
single argument. https://dev.to/spukas/curring-in-javascript-1o45#:~:text=Currying
%20is%20a%20technique%20of,each%20with%20a%20single%20argument.
Firefox uses merge sort. Chrome, as of version 70, uses a hybrid of merge sort and
insertion sort called Timsort.
The time complexity of merge sort is O(n log n). And space O(log n)
The time complexity of merge sort is O(n log n). And space O(1)
/*
design a database and listed ADD, UPDATE, DELETE commands to be expected.
Input would be as list of strings. ["ADD key1 value1"] ["UPDATE key1
value2"] ["DELETE key1"] read the entries and process required command.
Follow up: How can we handle transactions? Input can be like, START
TRANSACTION followed by some other inputs which should only be updated in
the database when COMMIT is received and can be rolledback in case ROLLBACK
is received.
*/
/**
* The question was to build a music player like Spotify with the following
functionality:
* - add_song (song_title:string) - Adds song to catalog and generates an
id starting with 1 -play_song (song_id:int, user_id:int)
* - Tracks a song played and by a given user
* -print_summary () - Prints song names and how many unique listens it
received sorted in descending order by unique listens
* -last_three_played_songs (user_id: int) Takes a userId and prints their
last 3 played songs
* -Update print_summary method to only print k songs, and ensure all
methods run better than O(N log N) solve this problem in functional
javascript
*/
nodejs
NodeJS -> https://github.com/learning-zone/nodejs-basics
function createLeak() {
return function () {
console.log(largeArray[0]);
};
MongoDB: https://github.com/learning-zone/mongodb-basics/tree/master
system.profiler, local.oplog.sh, journaling
system design
● Jay Prakash HLD round clickpost: Design Code Deployment Pipeline
1. RabbitMQ
2. Kafka Architecture: https://blog.bytebytego.com/p/why-is-kafka-so-fast-how-does-it
3. Why kafka fast :
https://blog.bytebytego.com/p/why-is-kafka-fast
Kafka can send millions of messages per second as it uses sequential disk I/O to enable
a high-throughput message exchange. Sequential disk I/O is a storage system that
stores and accesses data from adjacent memory space, and it's faster than random disk
access.
4. Kafka vs RabbitMQ, which one to use and why ?
https://aws.amazon.com/compare/the-difference-between-rabbitmq-and-kafka/
5. What is JWT (JSON Web Token)? How does JWT Authentication work? JWTs can
be encrypted, but they are typically encoded & signed
6. JWT access token vs refresh token: https://www.geeksforgeeks.org/jwt-
authentication-with-refresh-tokens/
7. SSO: https://blog.bytebytego.com/p/what-is-sso-episode-7
8. DNS: https://www.youtube.com/watch?v=e2xLV7pCOLI
9.
10. CORS, Preflight request and OPTIONS Method: https://dev.to/didof/cors-preflight-
request-and-option-method-30d3
https://drive.google.com/drive/u/0/folders/1lfgJzUnpixsE-hsnrkpVtR-N6tq0FZI-
function run(input){
const hashMap = new Map();
function calculate(array){
array.forEach(element =>{
// process object
for(const [key, value] of Object.entries(element)){
if(typeof value === 'number'){
hashMap.set(key, (hashMap.get(key) || 0) + value);
}
}
}
});
}
calculate(input);
return hashMap;
};
function quickSort(arr) {
if (arr.length <= 1) {
return arr;
}
// Example usage
let array = [10, 7, 8, 9, 1, 5];
console.log("Sorted array:", quickSort(array));
return leftIndex;
}
return items
};
● Stack
● Queue
● Binary search
● Tow pointer
● Array
● string
Behavioural Interview Questi
Top Behavioural Interview Questions and example Answers for Software Engineers
https://pradeesh-kumar.medium.com/top-behavioural-interview-questions-and-
example-answers-for-software-engineers-c5c4df7ce5fe
Interview Experience
Regular Check Interview Experiences
Leetcode
Geeksforgeeks
1. HLD Questions:
3. LeetCode Questions: