Showing posts with label Interview. Show all posts
Showing posts with label Interview. Show all posts

Algorithms and Me: Anatomy of a Process



A process is a program in execution, with it associated are process context and executable instruction.
A process has its own data, code, stack, register and memory space. Every process has its own virtual memory address range, I/O resources, opened files etc.

Creation of a process
Most widely used method to create a process is to use 'fork' and 'exec' system calls. As mentioned earlier, every process has parent, parent uses fork system call to create exactly same copy of itself. Once new process is scheduled, it can use exec system call to execute any program it wants to.

fork is a call where one process goes in and two come out. They both start there execution from the statement just after fork call (Remember new process is exact copy, hence its PC will be same).

How to distinguish between parent and child process? fork comes to rescue there. Call to 'fork' return child process's PID to parent process while zero to child process. By having check on return value of 'fork' system call we can figure out which process is parent and which is child.

Now, fork can be a very expensive call as OS has to duplicate whole lot of information, especially the virtually memory and pages currently used by the parent process. There is one concept which is called 'Copy on Write', so fork system call will not copy any of the pages till the time one of the process tries to modify the page. This arrangement makes fork system call fast.


Other system call is exec(). It is used to start a new program, it will replace contents of process with of program binary. There are many versions of the same system call used for varying purposes.
  1. The calls with v in the name take an array parameter to specify the argv[] array of the new program.
  2. The calls with l in the name take the arguments of the new program as a variable-length argument list to the function itself.
  3. The calls with e in the name take an extra argument to provide the environment of the new program; otherwise, the program inherits the current process's environment.
  4. The calls with p in the name search the PATH environment variable to find the program if it doesn't have a directory in it (i.e. it doesn't contain a / character). Otherwise, the program name is always treated as a path to the executable
When a process creates a child process, it may or may not wait for return status of the child process.
To wait for the return status, parent process uses wait() system call. It blocks the parent process till the time one of its child returns status. Usually return status of child process is used to check if the child process terminated normally or abnormally. Child process can inform their exit status using SIGCHILD signal.
There are variants of wait() like wait3() and wait4() which are non blocking call on parent process.

Read full article from Algorithms and Me: Anatomy of a Process

How do I design an arbitrary system in an interview? - Programmers Stack Exchange




  • Top-down - Looking down from a very high level build out a design and flesh out the design as various components get done and here are a handful of components that I could see....
  • Bottom-up - Looking from the ground up, here are bits and pieces one could build to try to put together....
  • Requirement clarification


  • iven the example of Google Docs, the obvious issues that come to mind are things like storage, security, scalability, availability, client interface design, browser compatibility, etc. How would you divide responsibility up between server and client? How would you handle backups? What happens when a server goes down? What would you do with "abandonded" documents (stuff that hasn't been accessed or modified in a long period of time)?
    Again, the point is not to solve any of those issues, but to identify them, talk through them, brainstorm a bit about how to address them, etc.
    • Gather requirements to answer the question (e.g., scope)
    • Break the problem down into more manageable pieces; possibly identify interfaces or objects that might be needed, or break the logic up into front-end, back-end, DB, etc.
    • Demonstrate familiarity with the structure and concepts behind that type of system, e.g., web apps in the case of Google Docs
    • Show what you tend to focus on when presented with a design problem (Object design? SQL tables? Design patterns?)
    • Show the boss a preview of what it will be like to develop a new system with you, where the boss walks in with a spec and says, "What would it take to build this?"

    simplified UML would be a common part of the answer
    you can move smoothly from a vague concept to a real architecture (with concrete - not vague - problems to be solved). And then communicate that architecture. 

    Read full article from How do I design an arbitrary system in an interview? - Programmers Stack Exchange

    Difference between get and load in Hibernate



    Difference between get and load method
    1. Behavior when Object is not found in Session Cache
    get method of Hibernate Session class returns null if object is not found in cache as well as on database while load() method throws ObjectNotFoundException if object is not found on cache as well as on database but never return null.
    Database hit
    Get method always hit database while load() method may not always hit the database, depending upon which method is called.
    Proxy
    Get method never returns a proxy, it either returns null or fully initialized Object, while load() method may return proxy, which is the object with ID but without initializing other properties, which is lazily initialized. If you are just using returned object for creating relationship and only need Id then load() is the way to go.

    Performance
    get method will return a completely initialized object if  Object is not on the cache but exists on Database, which may involve multiple round-trips to database based upon object relational mappings 

    while load() method of Hibernate can return a proxy which can be initialized on demand (lazy initialization) when a non identifier method is accessed. Due to above reason use of load method will result in slightly better performance, but there is a caveat that proxy object will throw ObjectNotFoundException later if corresponding row doesn’t exists in database, instead of failing immediately so not a fail fast behavior.

    5. load method exists prior to get method which is added on user request.

    When to use Session get() and load() in Hibernate
    1. Use get method to determine if an instance exists or not because it can return null if instance doesn’t exists in cache and database and use load method to retrieve instance only if you think that instance should exists and non availability is an error condition.

    2. consider using load method  if  your code doesn't access any method other than identifier or you are OK with lazy initialization of object, if persistent object is not in Session Cache because load() can return proxy.
    Read full article from Difference between get and load in Hibernate

    Top 10 Servlet Interview Question Answers - J2EE



    Question 1: In web.xml file   <load-on-startup>1</load-on-startup> is defined between <servlet></servlet> tag what does it means.
    Ans: whenever we request for any servlet the servlet container will initialize the servlet and load it which is defined in our config file called web.xml by default it will not initialize when our context is loaded .defining like this <load-on-startup>1</load-on-startup> is also known as pre initialization of servlet means now the servlet for which we have define this tag has been initialized in starting when context is loaded before getting any request

    Why super.init (config) wiil be the first statement inside init(config) method.
    Ans: This will be the first statement if we are overriding the init(config ) method by this way we will store the config object for future reference and we can use by getServletConfig ()  to get information about config object if will not do this config object will be lost and we have only one way to get config object because servlet pass config object only in init method . Without doing this if we call the servletConfig method will get NullPointerException.
    javax.servlet.GenericServlet.init(ServletConfig)
      public void init(ServletConfig config)
        throws ServletException
      {
        this.config = config;
        init();
      }

    Can we call destroy() method inside the init() method is yes what will happen?
    Ans:Yes we can call like this but  if we have not override this method container will call the default method and nothing will happen.after calling this if any we have override the method then the code written inside is executed.

    How can we refresh servlet on client and server side automatically?
    Ans: On client side we can use Meta http refresh and server side we can use server push.

    How can you get the information about one servlet context in another servlet?
    Ans: In context object we can set the attribute which we want on another servlet and we can get that attribute using their name on another servlet.
    Context.setAttribute (“name”,” value”)
    Context.getAttribute (“name”)

    what is servlet collaboration?
    Ans communication between two servlet is called servlet collaboration which is achieved by 3 ways.
    1. RequestDispatchers include () and forward() method .
    2. Using sendRedirect()method of Response object.
    3. Using servlet Context methods

    What is the difference between ServletConfig and ServletContext?
    Ans: ServletConfig as the name implies provide the information about configuration of a servlet which is defined inside the web.xml file or we can say deployment descriptor.its a specific object for each servlet.

    ServletContext is application specific object which is shared by all the servlet belongs to one application in one JVM .this is single object which represent our application and all the servlet access application specific data using this object.servlet also use their method to communicate with container.

    Read full article from Top 10 Servlet Interview Question Answers - J2EE

    Labels

    Algorithm (219) Lucene (130) LeetCode (97) Database (36) Data Structure (33) text mining (28) Solr (27) java (27) Mathematical Algorithm (26) Difficult Algorithm (25) Logic Thinking (23) Puzzles (23) Bit Algorithms (22) Math (21) List (20) Dynamic Programming (19) Linux (19) Tree (18) Machine Learning (15) EPI (11) Queue (11) Smart Algorithm (11) Operating System (9) Java Basic (8) Recursive Algorithm (8) Stack (8) Eclipse (7) Scala (7) Tika (7) J2EE (6) Monitoring (6) Trie (6) Concurrency (5) Geometry Algorithm (5) Greedy Algorithm (5) Mahout (5) MySQL (5) xpost (5) C (4) Interview (4) Vi (4) regular expression (4) to-do (4) C++ (3) Chrome (3) Divide and Conquer (3) Graph Algorithm (3) Permutation (3) Powershell (3) Random (3) Segment Tree (3) UIMA (3) Union-Find (3) Video (3) Virtualization (3) Windows (3) XML (3) Advanced Data Structure (2) Android (2) Bash (2) Classic Algorithm (2) Debugging (2) Design Pattern (2) Google (2) Hadoop (2) Java Collections (2) Markov Chains (2) Probabilities (2) Shell (2) Site (2) Web Development (2) Workplace (2) angularjs (2) .Net (1) Amazon Interview (1) Android Studio (1) Array (1) Boilerpipe (1) Book Notes (1) ChromeOS (1) Chromebook (1) Codility (1) Desgin (1) Design (1) Divide and Conqure (1) GAE (1) Google Interview (1) Great Stuff (1) Hash (1) High Tech Companies (1) Improving (1) LifeTips (1) Maven (1) Network (1) Performance (1) Programming (1) Resources (1) Sampling (1) Sed (1) Smart Thinking (1) Sort (1) Spark (1) Stanford NLP (1) System Design (1) Trove (1) VIP (1) tools (1)

    Popular Posts