Skip to content

PranabNandy/Interview-Experience

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

16 Commits
Β 
Β 
Β 
Β 

Repository files navigation

πŸ’Š 1. Amazon - SDE 2 (Kindle E-reader team)

πŸ›  Job Profile: OS Framework Development

  1. Coding Round => 2Q + Leadership Principle Questions (online test)
    • 1 Q from string
    • 1 Q from Interval Amazon-DWPInterics-(1)

πŸ›  Now Face to Face interview with Amazon Development Centre, Taurus 2 Building, Bangalore

  1. DSA round ( 2Q --> Binary Matrix + Binary Search Tree)

  2. System Design Round ---> HLD --> Health Tracker System

  3. Bar Raiser Round : 1Q Array ( Stack topic) + Behaviour Questions

  4. Hiring Manager Round : Qualcomm Work related Q + Linux Scheduler + Linux CPUfreq Governor + Linux GIC driver + HR Q

πŸ’Š 2. Aristra Network (Networking related team)

  1. Technical Round: (online)
Qualcomm Work related Q + CPU idle Governor + DCVS Operation
Coding ( linked list)

Arista1

πŸ›  Arista Networks Private Limited, Bangalore Office

  1. Technical Round: Face to face interview
Qualcomm Work related Q +  Usecase CPU Co-Processor over Linux Kernel Driver
Coding:
Design a generic linked list i.e

#define INT 0
#define FLOAT 1
#define CHAR 2
#define STRING 3
struct Node{
    void *ptr;
    Node *next
    uint8_t type;
};

System Design :
IPv4 CIDR implementation using OOPs in C++

πŸ’Š 3. Oracle - Member Of Technical Staff ( DataBase Framework Development and Test team)

πŸ›  All rounds are online

  1. Coding:
MySQL query using INNER JOIN, WHERE clause, GROUP BY clause

Coding: Area of Tringle in 2D graph points
Asked to design all test cases
I designed 10 test cases
Asked question from DBMS like Normalization ( 1NF, 2NF, 3NF and BCNF)
  1. Puzzle Question + SQL Query ( 30 mins round)
  2. Coding:
Hacker rank coding question ( Matrix + DFS)
Puzzle Question
MySQL query in Hackerrank
using OUTER JOIN, WHERE clause, IN clause, ORDER BY clause
  1. Basic Programming Round with critical optimization:
Implement stoi function
Implement a function that converts Integer to string

πŸ” why you used 2 times *(mul operation) , It consumes so much execution time
πŸ” Why you did not use >> in place of * in some cases where you can optimize 
πŸ” why 2 times if the condition in the program? why 1 is not  enough?
πŸ” why you wrote repeated lines in the code?

At the end, he said, "You are good in programming but not in optimizing"

πŸ’Š 4. AMD - Member Of Technical Staff ( Performance Team)

πŸ›  All rounds are online

  1. Technical Round 1: Coding (2 Q, Array, matrix) + Puzzle (3 Q)+ Linux Basic

  2. Technical Round 2 : Coding (5 Q, Array, stack, Graph, Sub Matrix Question, Dynamic Programming ) + Puzzle (1 Q)

  3. Technical Round 3 : + Puzzle (2 Q) + Qualcomm related work

πŸ’Š 5. Google - L3 Engineer ( Andriod TV Embedded Development Team)

_A270254

🏹 All rounds are online even around the globe

  1. HR telephonic Round : (HR is from India (even Bengali πŸ˜ƒ ))

  2. Screening Round: (Interviewer is from China) 1 Coding question (heap)

 βœ… Google used a platform like Google Docs for coding
 βœ… The interviewer will create the test case from his mind
 βœ… You can not compile the code to check the error
 βœ… You have to find the bugs in your code from your side
  1. HR telephonic Round : Performance of the screening round won't be considered for final selection. Next rounds will only be considered for evaluation

  2. Technical Round 1: ( Interviewer is from Korea) 1 Coding question (Matrix)

  3. Technical Round 2: ( Interviewer is from China) 1 Coding question (Hash Table, Sorted BST (map in c++))

  4. Technical Round 3: (Interviewer is from JAPAN) 1 Coding question (Tree)

  5. Googleness Round : (Interviewer is from China) Behaviour Questions

  6. HR telephonic Round : Feedback for last 4 rounds

πŸ’Š 6. Samsung - Associate Staff Engineer ( Device Driver Development Team for HSI devices)

SSIR

🏹 Face to face interview at Samsung Semiconductor India Research SSIR, Bangalore

  1. Technical Round 1:
Coding 2 Q ( array, matrix)
Linux (OS concept)
Arm Architecture (Exception Level, ATF)
Questions from My Networking Open Source Contribution
Qualcomm related Questions
  1. Technical Round 2:
Qualcomm related Questions
Coding 2 Q ( 2 Pointers, Tree)
Linux Device Driver Implementation related questions
Arm Architecture ( CPU, pipeline)
Questions from My Research publication in Cloud computing

  1. Technical Round 3:
Coding 1 Q (  matrix)
Linux: CPU freq governor and CPU idle governor
Question from my Deep Learning project
Qualcomm related Questions
  1. Technical + Manegerial Round 3:
Qualcomm related Questions
Explained more about the Job profile and Samsung team culture

πŸ’Š 7. Nvidia ( CAD Tool Development Team for EDA tools)

🏹 All rounds are online

1.Online Test: MCQ ( C++, Appti, Puzzle)

  1. Screening Round:

      Based on your written test + DSA concept + OOPs concept + OS concept
      Why you can able to correctly answer the hard question but made mistake in easy question?
      Checking my basics in each subject 
  2. Technical Round 1:

      1 Coding question ( string ) in Hacker rank
      Qualcomm work-related questions
      Digital logic design subjective questions (Flip Flop, Latch, Sequential Circuit)
      C++ Conceptual questions : smart pointer, single tone class, OOPs questions
  3. Technical Round 2:

      1 Coding question ( matrix ) in Hacker rank
      Qualcomm work-related questions
      Digital logic design subjective questions (MUX, DEMUX, conversion from JK flipflop to T flipflop)
      C++ Conceptual questions: vTable, vPtr, Virtual class, function overloading, function hiding
      Details working principle of vTable for Parent, Child and super child class
  4. Technical + Managerial Round:

      
      Qualcomm work-related questions
      System Design Question --> HLD -->
      He draw a Network of circuit having FF, Latch, Delay circuit, OR, AND, NOT gate and all
      Desing a system for generic Network Circuit
      Explained about team culture and work

πŸ’Š 8. Cadence ( C++ Compiler Development Team for Neural Network Optimization)

  • Design a C++ compiler which takes a NN as input and generates an BLOB file which we can run on DSP
  • That engine call as NEO in cadance
  • Also one C Driver Development team is there for NEO engine
  • It develops compiler to optimize NN engine for faster execution in DSP First 2 rounds are online and 3rd round was offline at Cadence Design Systems India Pvt Ltd

main-building

  1. Technical Round 1:
     
     Operator Overloading and its example in code

     System Design Question: Design a class in C++ for generic driver APIs exposed to outer world
    => driver: open, close, init, read(UART, SPI, I2C)
    => Used Concept: template + operator overloading+ friend function + function overloading 
                       + polymorphism + Data Abstraction + abstract class 
      templete <class X>;
      class Communication{
           private:

           public:
	             void init(X ob){

	             }
	             void open(X ob){

	             }
	             void processing(X ob){

	              }
               void terminate(X ob){

              	}
        } 


     => Matrix Rotation related question
     => Synchronization related question
              int flag=1;
        void lock(Mutex &m1){
	         while(flag==0);
	         flag=0;

	          // TSL => test and set lock
         }
         void unlock(Mutex &m2){
	           flag=1;
         }
  1. Technical Round 2:
    
    memcopy function Implementation

    void swap(int a  , int b){
         a=a^b; 
         b=a^b;  // a^b^b = a 
         a=a^b;  // a^b^a= b
     }

    => Run time binding using virtual function
#include <bits/stdc++.h>
using namespace std;
int main() {
   int x;
   int *ptr;
   int &ref=x;
   ptr=&x;
   x=10;
   cout<<*ptr<<endl;
   cout<<ref<<endl;

   return 0;
}
A ob1;
A ob2(ob1);
class A{
   int val, data;
   public:
       A(int x,int y)val:x,data:y{
           // parent constructor
           val=x;
           data=y;
       }
       A(const A &ob){ // copy constructor
           A.val=ob.val;
           A.data=ob.data;
       }
       virtual void foo(){
           
       }
}

class B:public A{
   public:
       void foo(){
           
       }
}

B *ob=new A();
B *ob=new B();

==> Implement pow function without using Math lib
25 ===> 5
5 == 2 
100  00  00 === 1000  ( using O( sqrt(N) )

1 2 3 4 5 6 7....1000  --- > do it using  binary search O(log N)   
int foo(int x){
   
   int i=1;
   int ans=1;
   while(i*i<=x){
       ans=i;
       i=i*2;
   }
   return ans;
}
  1. Technical Round 3:
1. Gate Score, NITK, Gap 1 year, LC questions
2. Qualcomm Snapdragon Performance & Power ()
---> CPUCP  ---> DCVS
---> ACG
[ M1 ] ------- SCMI ---------- [ M2 ]
---> Linux ---> cpuFreq ---> cpuIdle

 APP1         APP2
  |             | 
 \/            \/
 CORE1        CORE2

[ ---- Circular Buffer -----]
APP1 - write()        APP2- read()

I used flag = 0, 1, 0 ,1

if( flag==0){
    if( loc1 < loc2){
    }
}
else{
    if( loc1 > loc2){
    }
}

3. What is most beautiful satisfaction in Qualcomm
--> It was specific for Auto Motive SOC
--> I made it generalized for all Mobile, Auto, XR
How?
CD = {  CD_st, CD0, CD1............., CD_end }

4. DL project  ---> ok
  MLD  ( Memory Leak detection) lib
-----> could not able to explain MLD_algo ()

5. pattern=10110011    
bits of streams are coming in

6. Sign Magnitude, 1's complement, 2's complement

7.
int b[5][10];    // 1000
int **a;
a=b;
cout<<a[2][3];   // 7
---> 1000 + (2*10 + 3 )*4

int c[100][200];    // 2000
a=c;
cout<<a[2][3];   // 10

Normally,
a=(int**)malloc(5*sizeof(int*));
...
   a[i]=(int*)malloc(10*sizeof(int));
...

====================================
Think of Symbol Table:
====================================
b   ----------   0x1000  ( It has the information about b size 5*10 )
c   ----------   0x2000  ( It has the information about c size 100*200 )
a   ----------   0x333


===================================
   malloc()
===================================
-- It has information about memory created and its size



when a----> 0x1000
It will have all the properties of address 0x1000

==================================
   *(*(a+2)+3) = 999 ;
   ---> (a+2)  == 1000+2*10*4 = 1080  ---> It is matrix address 1080
   ---> *(a+2)  == 1080   ----> It will point to row address 1080
   ---> (*(a+2)+3) == 1080+12 = 1092 ---> It will point 3rd col of 2nd row
   ---> *(*(a+2)+3) == 1080+12 = 1092 ---> It will point "element (7th value)" of  3rd col of 2nd row

πŸ’Š 9. IBM ISL ( EDA team for Power Estimation Tools)

  • Physics needs to learn
  • No code writing in VHDL All rounds were online
  1. Technical Round 1:
   
     1. Left view of BST
     2. Check 2 tress are equal or not
     3. Specific Requirement

class Tree{
 private:
    int val;
    Tree *left;
    Tree *right;
    static map<int, *Tree> m;
 public:
    Tree(int value){
        val=value;
        this->left=nullptr;
        this->right=nullptr;
    }
    Tree* first(){
        auto it=m.begin();
        return it->second;
    }
    Tree* next(Tree *root){ // In order
        auto it=m.find(root->val);
        it++;
        return it->second;
    }
    void insert(int node){
        
        Tree *root=new Tree(node);
        m[node]=root;
    }
    
}

Tree *root=new Tree(10);
// insert
root->first(); //
  1. Technical Round 2:
1. Cycle detection in Linked list
2. A Node deletion in BST
3. System Design Question  -- Design Lift system

1 elevator -- 20 floors


class Elevator{
 private:
   vector<int> floor;
   int noOfFloor;
   int Dir;  // 1 up   0 down
   int CurrentFloor; 
   int lowestFloorReq, highestFloorReq;
public:
   Elevator(int n){
       Dir=1;
       CurrentFloor=0;
       noOfFloor=n;
       floor.resize(n,0);
   }
   void InReq(int floorNo){
       highestFloorReq=max(highestFloorReq,floorNo);
       lowestFloorReq=min(lowestFloorReq,floorNo);
       floor[floorNo]=1;
   }
   void OutReq(int floorNo){
       highestFloorReq=max(highestFloorReq,floorNo);
       lowestFloorReq=min(lowestFloorReq,floorNo);
       floor[floorNo]=1;
   }
   void changeDir(){
       Dir = Dir ^ 1;
   }
   void stop(){
       delay(10);
   }
   void Move(){
       if(Dir){ // Up
           if(currentFloor<highestFloorReq){
               if(Floor[currentFloor]){
                   stop();
                   Floor[currentFloor]=0;
               }
           }
           else if(currentFloor==highestFloorReq){
               highestFloorReq=0;
               Dir = Dir ^ 1;
           }
       }
       else{
           
       }
   }
};

πŸ’Š 10. Google - SoC Product Test Engineer ( SLT(System Level Test) team)

  • Test in different sub system like CPUSS, TPU, Sensor, Debug subsys, Camera Subsys
  • Matching the KPI with precession
  • We think how much precision we can add in the CPUSS

Both rounds were online

  1. Technical Round 1:
/*1. 
  Supported Functions:
1. `get(key)`: Retrieve the value associated with the key if the key exists in the cache, otherwise return -1.
2. `put(key, value)`: Update the value of the key if it exists. If it does not exist, insert the value. If the cache has reached its capacity, invalidate the least recently used item before inserting a new item.

Constraints:
1. `get` and `put` operations should run in O(1) time complexity.
2. Use only primitive data structures (arrays, linked lists, etc.) to implement.

*/
<int,int >
  2  500 
  6  1000
insert --> top position O(1)
get ---> top position O(1)
balancing/processing ---> 
  struct cache_t LRU_Cache;

struct Cache{
  int maxCap;
  int currentSize;
  unordered_map<int,pair<int,int>> Hash;   
  map<int,int> BST;                        
  long int time;
  
  void put(int key,int val){
    // Mutex Lock
     if(currentSize<maxCap){
        currentSize++;
        time++;
        Hash[key]={val,time};
        BST[time]=key;
     }
     else{
       auto it=BST.begin();
       BST.erase(it);
       time++;
       Hash[key]={val,time};
       BST[time]=key;
     }
    // Mutex Un Lock
  }
  int get(int key){
     // Mutex Lock
    if(Hash.find(key)==Hash.end()) return -1;
    pair<int,int> temp=Hash[key];
    int t=temp.second;
    auto it=BST.find(t);
    BST.erase(it);
    time++;
    BST[time]=key;
    Hash[key]={temp.first,time};
    return Hash[key].first;
    // Mutex Un Lock
  }
}cache_t;



/*
a = [a, b, c, d, e]
Rotate it left by 2 indices.
b = [ c, d, e, a, b]

d= [ d,  e, a, b, c]

----------
e = 5
2 - [ 5 - 4]  = 1
d

2 - [ 5 - 3] = 0 


1. rotate the array 
2. getelementbyindex(n) - O(1)

*/

struct Array{
  int *arr;
  int n;
  int rotation_number;
  void init(int number, int noOfRotation){
    n=number;
    rotation_number=noOfRotation%n;
    
    arr=(int*)malloc(n*sizeof(int));
  }
  void rotate(int num){
     num=num%n;
     rotation_number=num;
    // O(k*n)
    for(int i=0;i<num;i++){  // k 
      int j=0; 
      int temp=arr[0];
      while(j<n-1){           // n
        arr[j-1]=arr[j];
        j++;
      }
      arr[n-1]=temp;
    }
  }
  int getElementByIndex(int index){
    if(index>rotation_number) return arr[index-rotation_number];
    else return arr[n-1-rotation_number-index];
    
  }
};
   

/*
Consider a number, calculate how many bits need to be flipped in order for it to reach the nearest number which is an odd power of 2.

124 -> 128 (2^7)
200 -> 128 (2^7)

------
128 , 256
log(n) = k 
2 k  (nearest)  ---- 1 set k-1 resets  ----> 
2 k-1
2 k+1

*/
int flipped(int n){
  int k=log(n);  // 200  --- 7     128 , 256
  //   1100 1000
  //   1000 0000  
  // 1 0000 0000
  int low,high;
  if(k%2==0){
      low=k-1;
      high=k+1;
  }
  else {
    low=k;
    high=k+2;
  }
  int cnt=0;
  int first=pow(2,low), third=pow(2,high);
  int nearest;
  if(abs(n-first)< abs(n-third)) nearest=first;
  else nearest=third;
  if((n>>k & 1) != (nearest>>k & 1)) cnt++;
  int i=k-1;
  while(i>0){
    if((n>>i & 1) == 1) cnt++;
    i--;
  }
  return cnt;
}
  

/*
Tile a rectangular floor with the least number of square tiles.

  */
int MinNoOfTiles(int width, int len){
  int cnt=0;
  while(width*len!=0){
     if(width>=len){
       int temp=len;
       len=width-len;
       width=temp;
     }
     else{
      int temp=width;
       width=len-width;
       len=temp;
     }
     cnt++;
     //cout<<width<<" "<<len<<endl;
  }
  return cnt;
}
  1. Technical Round 2:
1. system Programming
--> Design a Server servicing M request coming from N clients
--> Take care of fork
--> take care of Zombie process, Orphan process etc.

2. Design a stress test
--> L1 D = 96KB     L1 I=32 KB
--> L2 = 256 KB
--> L3 = 8 MB unified into 8 slices

3. What is AOP
4. What is ACG feature?
5. What is LPM, DCVS?
6. what are the important counters in CPUSS i.e PMU, AMU
7. what will be the bus size between CPU and Cache for a given xyz time?
8. Questions from Page Fault
9. How we Dedug in the system?
-> SDI (TZ)    when abnormal behaviour detected
Pass 0: Copy the data into internal memory     ||   AOP --> refresh the DDR
Pass 1: Internal memory to DDR
Pass 2: DRR to host system Hard Disk

About

It contains all my Interview Experiences after having 1.11 Years of Experience in Qualcomm

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published