Monday 25 September 2017

Key-Value stores (B+ trees, LSM)

If you are into storage domain, then key-value stores are the new thing. One needs to be familiar with some of the latest key-value store architectures. Following are a couple of videos to start off in this
area
  1. Berkeley DB provides the basic architecture for a key value store.
  2. Indeed's architecture would give some idea on LSM (converting random updates/writes to sequential writes).
  3. ForestDB provides details on couchbase architecture along with SSD optimizations.
  4. LevelDB, RocksDB, WiredTiger are some of the others to look at.

Lauren Foutz - BerkeleyDB [The Databaseology Lectures - CMU Fall 2015]

https://www.youtube.com/watch?v=HO9UKYomI7c


From 1 To 1 Billion: Evolution of Indeed's Document Serving System

https://www.youtube.com/watch?v=jwq_0mPNnN8


Next Generation Storage Engine: ForestDB – Couchbase Connect 2015



Optimizing ForestDB for Flash-based SSD – Couchbase Connect 2015

https://www.youtube.com/watch?v=x0T4qmc1mkI

Coding interviews

From my experience of being a systems software engineer I feel one needs to be always ready for a coding interview, since you don't know when there is an new opportunity/layoff. More the experience, more you need to prove that you are a hands-on person in any technical interview along with strong domain/product expertise.  My main experience is into C/C++, storage stack, network stack, Unix/Linux kernel. I found the following coding interview book quite good, along with this algorithms book by Cormen should get you started. Just read through the pseudo code available in Cormen to refresh your memory and then the coding interview books. I would recommend code some/all of the questions on paper/PC (for any skype interviews). Before the interview keep yourself calm which helps to be creative during interviews. The coding interview preparation should get you some of the ideas which helps you in the interview instead of reinventing the wheel for every question during the interview process.

Elements of Programming Interviews  - by Adnan Aziz  (Author), Tsung-Hsien Lee  (Author), Amit Prakash  (Author)



http://elementsofprogramminginterviews.com/ 


Typical coding questions asked in an interview from my recent experience are (If you know of one solution try to know multiple solutions). 

1)  Print a binary tree print level by level.
2)  Mirror image of a binary tree
3)  Intersection of two single linked lists, find the intersection point
4)  Print a two dimensional array in spiral form.
5)  Find duplicate numbers in an array 
6)  XOR two unsigned integers without using bitwise xor operation.
7)  How do you implement a buffer cache (typical answer from "Design of Unix operating system" by Maurice Bach).
8) Egg drop puzzle
9) bee running between two moving in trains
10) find a value in a rotated sorted array
11) reverse a linked list