Nitin Agrawal
Contact -
  • Home
  • Interviews
    • Secret Receipe
    • InterviewFacts
    • Resume Thoughts
    • Daily Coding Problems
    • BigShyft
    • CompanyInterviews >
      • InvestmentBanks >
        • ECS
        • Bank Of America
        • WesternUnion
        • WellsFargo
      • ProductBasedCompanies >
        • CA Technologies
        • Model N India
        • Verizon Media
        • Oracle & GoJek
        • IVY Computec
        • Nvidia
        • ClearWaterAnalytics
        • ADP
        • ServiceNow
        • Pubmatic
        • Expedia
        • Amphora
        • CDK Global
        • CDK Global
        • Epic
        • Sincro-Pune
        • Whiz.AI
        • ChargePoint
      • ServiceBasedCompanies >
        • Altimetrik
        • ASG World Wide Pvt Ltd
        • Paraxel International & Pramati Technologies Pvt Ltd
        • MitraTech
        • Intelizest Coding Round
        • EPAM
    • Interviews Theory
  • Programming Languages
    • Java Script >
      • Tutorials
      • Code Snippets
    • Reactive Programming >
      • Code Snippets
    • R
    • DataStructures >
      • LeetCode Problems
      • AnagramsSet
    • Core Java >
      • Codility
      • Program Arguments OR VM arguments & Environment variables
      • Java Releases
      • Threading >
        • ThreadsOrder
        • ProducerConsumer
        • Finalizer
        • RaceCondition
        • Executors
        • Future Or CompletableFuture
      • Important Points
      • Immutability
      • Dictionary
      • URL Validator
    • Julia
    • Python >
      • Decorators
      • String Formatting
      • Generators_Threads
      • JustLikeThat
    • Go >
      • Tutorial
      • CodeSnippet
      • Go Routine_Channel
      • Suggestions
    • Methodologies & Design Patterns >
      • Design Principles
      • Design Patterns >
        • TemplatePattern
        • Adapter Design Pattern
        • Decorator
        • Proxy
        • Lazy Initialization
        • CombinatorPattern
        • RequestChaining
        • Singleton >
          • Singletons
  • Frameworks
    • Apache Velocity
    • Spring >
      • Spring Boot >
        • CustomProperties
        • ExceptionHandling
        • Issues
      • Quick View
    • Rest WebServices >
      • Interviews
      • Swagger
    • Cloudera BigData >
      • Ques_Ans
      • Hive
      • Apache Spark >
        • ApacheSpark Installation
        • SparkCode
        • Sample1
        • DataFrames
        • RDDs
        • SparkStreaming
        • SparkFiles
    • Integration >
      • Apache Camel
    • Testing Frameworks >
      • JUnit >
        • JUnit Runners
      • EasyMock
      • Mockito >
        • Page 2
      • TestNG
    • Blockchain >
      • Ethereum Smart Contract
      • Blockchain Java Example
    • Microservices >
      • Messaging Formats
      • Design Patterns
    • AWS >
      • Honeycode
    • Dockers >
      • GitBash
      • Issues
  • Databases
    • MySql
    • Oracle >
      • Interview1
      • SQL Queries
    • Elastic Search
  • Random issues
    • TOAD issue
    • Architect's suggestions
  • Your Views

Interview for CA Technologies in Pune on 12 May 2018

Question 1 : Find if the given linked list has a loop?
​Solution : Though it is vary common, but still I am putting it here.
​                One is, you can maintain 2 pointers & start them such that each pointer has different
​                speed & if they meet then it means that there is a loop. But this will take time
                depending on the number of nodes in the list to iterate through.
​                Second is, if you have time constraints but have enough space to store all the
​                nodes then store all the nodes in a hashset while iterating through the list, if you get
​                false while adding then it the node from where loop is starting.
​                Third is, if your node has any property to define if it is visited or not then it will make it
​                fast with no requirement of any above ways.

Question 2 : What is singleton? Write a class.
Solution : You can get many answers on this as there are many ways for this but here
​                  purpose is to understand if you know the purposes of those ways.
​                 So you can tell about ways with their reasons given here.
                 
Question 3 : How to find any element in an array?
​Solution : In simple, you can iterate through the array with time complexity as O(n).
​                  Second, if possible then you can sort the array & do the binary search & its
​                  complexity will be same as that of sorting algorithm used here.


Question 4 : How to print the elements in an array without using loop, order doesn't matter?
​Solution : Solution was given to me, & that is to use recursion.

​Question 5 : What is decorator pattern?
​Solution : See here.

​Question 6 : How will you create your own linked list & provide the method to insert the data.
​Solution : Though I was asked to provide the solution by using only one pointer but I feel that
​                  way the insertion operation will become O(n) rather being O(1), and in interview I
​                  was expected to make the logic complex & not simple as using 2 pointers, logic
​                  was getting simple, though I didn't mention at that time that it is also efficient. But
​                  was required to give the logic using one pointer only, so you can mention the
​                  reason that using 2 pointers will make the logic simple, performance efficient & will
                  also not be taking significant memory space while using 1 pointer only it will surely
​                  reduce the insert operation performance then why to use such?
So below is basic -
/**
 * Below using 2 pointers, one to point the start position and
 * second to point the current position in list.
 * One can skip the use of 2nd pointer(temp), like this can be put in
 * the interviews, then you can create that second pointer in the
 * insert method. But it will cause performance issue as on every
 * insert you have to iterate through the list & insertion will be
 * O(n) rather being as O(1)
 * @author nitin
 *
 * @param <T>
 */
public class LinkedList<T> {
 
 Node<T> start;
 Node<T> temp;
 Node<T> curr;
 
 public void insert(T data) {
  if(start == null) {
   start = new Node<T>();
   temp = start;
   curr = start;
  } else {
//   Below statement can be used if 'temp' is local variable here.
//   temp = start;
   while(temp.next != null) {
    temp = start.next;
   }
   temp.next = new Node<T>();
   temp = temp.next;
  }
  temp.data = data;
 }
 
 public T getData() {
  if(curr == null)
   return null;
  T data = curr.data;
  curr = curr.next;
  return data;
 }
 
 private class Node<E> {
  E data;
  Node<E> next;
  
 }
}


Question 7 : ​How to find the nth bit is set or not, using bit operations?
Solutions : 
public class KthBitSet {
 public static void main(String[] args) {
  int num = 25;
  int a = num;
  int checkBitStartLoc = 5;
  int checkBitEndLoc = 4;
  int bitsCount = Integer.bitCount(num);
  int len = Integer.toBinaryString(num).length();
  if(bitsCount == 0)
   System.exit(1);
  // Bits in num
  System.out.println("Binary Value : " + Integer.toBinaryString(num));
  // Bits in 1 after left shifting the bits by checkBitEndLoc-1
  // Shifting the bits by the count as 1 less because then the position
  // of 1 in resulting number will at the required place as shown below.
  System.out.println("After shifting 1 to check from last : "
    + Integer.toBinaryString(1 << (checkBitEndLoc-1)));
  // If wants to check the bit at the given location is set or not.
  // And this location is considered from the last.
  System.out.println("If value > 0 then required bit from end is set : "
    + (a & (1 << (checkBitEndLoc-1))));
  // If the location of the bit is from the start then
  System.out.println("If value > 0 then required bit from start is set : "
    + (a & (1 << (len-checkBitStartLoc))));
  // If the location of the bit is from the start and don't want to use
  // above way then
  num = (1 << len) >> checkBitStartLoc;
  System.out.println("If value > 0 then required bit from start is set : "
    + (a & num));
  // If the location of the bit is from the start and don't want to use
  // above bit operations & not looking to save the memory & performance then
  String str = Integer.toBinaryString(a);
  if(str.charAt(checkBitStartLoc-1) == '1')
   System.out.println("SET.....");
 }
}

 Can discuss such various ways as per the expectations.

​Question 8 : Find the number in an array using recursion.
​Solution : One can write a simple code for recursion & put the break condition with return
​                  value. But I really don't understand its any purpose except to test your thought
​                  process.
Powered by Create your own unique website with customizable templates.