F SHARP (PROGRAMMING LANGUAGE) INTERVIEW QUESTIONS & ANSWERS

  1. Answer :
    F# is a Computer programming language. It was designed and developed by Microsoft. It supports functional, object-oriented and imperative programming approaches. You can create any type of application by using this programming language.
  2. Answer :
    F# has many features. Following are the main features of F#:
    • Type inference
    • Type extension
    • Less code
    • Immutable data
    • Pattern matching
    • Assertion
    • Lambda expression
    • Function composition and pipelining
    • Object expression
    • Lazy computation and many more
  3. Answer :
    F# provides rich set of data types. It helps to deal with any type of data whether it is scientific data, data of business analysis etc.
    1. Answer :
      The unit type is a type which indicates the absence of specific value. The unit type has only a single value. This value acts as a placeholder when no other value exist.
    2. Answer :
      Casting is a process of converting one type to another type. F# provides mainly two operators to deal with upcasting and downcasting. Further details are available here.
    3. Answer :
      An operator is simply a symbol that is used to perform operations. There can be many types of operations like arithmetic, bitwise, logical etc.
      There are following types of operators to perform different types of operations in F# language:
      • Arithmetic operators
      • Boolean operators
      • Bitwise operators
      • Nullable operators
  4. Answer :
    In F#, functions can be composed from other functions. It is a process of composing in which a function represents the application of two composed functions. F# function pipelining allows us to call functions in chain. Pipelining operator takes a function and an argument as operands and returns a value.
  5. Answer :
    Lambda expression is an unnamed or anonymous function. Sometimes instead of defining a full name function you may create a lambda expression. It optimizes the code. You must use fun keyword to define lambda expression.
  6. Answer :
    F# inline function is a function that is integrated directly into the calling code. It helps to optimize code and sometimes can improve performance too.
    1. Answer :
      Binding is a process of associating of identifier or function to a value. Let keyword is used to bind identifier to a value. In F#, We use let keyword to declare variable, function and private class members.
    2. Answer :
      Do binding is used to execute code without defining function or any type. You can write independent code by using do binding in F#.
    3. Answer :
      F# allows type annotation so that you can explicitly mention the type of identifier or parameter or return type of a function. You must use: (colon) to apply annotation in F#.
      1. Answer :
        Type inference means when you are writing code then you don't need to specify type of values or variables. F# compiler is strong enough to infer the type of value.
      2. Answer :
        When code does not specify any type explicitly then the compiler considers generic type. This is called automatic generalization. It helps to write generic code without increasing complexity.
      3. Answer :
        In F#, tuples are collection of anonymous values. Values may be same or different types. It allows us to put expression as a value also.
        1. Answer :
          Yes, by using tuple, you can return multiple values in a function.
        2. Answer :
          It is immutable collection of same type elements. It maintains order of elements.
        3. Answer :
          Arrays are mutable collections of data of same type. It starts from 0 index and goes to n-1 where n is length of arrays.
        4. Answer :
          Sequence is a series of same type of elements. It provides better performance than list.
        5. Answer :
          F# allows you to write generic function, method, type, variable etc. It helps to avoid repeating of code for each type. By writing generic code you can apply it for any type or value.
        6. Answer :
          Options type is used when there is no value present for function or variable. It provides an expression Some and a value None for handling the empty values or variables.
        7. Answer :
          Records are used to store elements in the form of label and value. It can store any type of data. You are not bound to store same type values as list. Records are immutable by default so you can't modify original records.
        8. Answer :
          Enumeration is popularly known as enums. It is a combination of label and value pair. Labels are assigned to a subset of the values. You can use them in place of literals to make code more readable and maintainable.
        9. Answer :
          Reference cells refer to memory locations. It allows you to create mutable values. F# uses immutable data structure by default.
        10. Answer :
          F# structure is a data structure which is used to organize data, it is value types and efficient than class. It does not allow let binding, so you must declare fields by using val keyword.
        11. Answer :
          It is useful data structure. It helps to store heterogeneous data. Union is used to represent tree data structures. It provides cases and each case consist of heterogeneous data.
        12. Answer :
          Object is a real world entity. It can be anything like - cell phone, car, football etc.
          Object is an instance of class we can access all the members of class by using object of this class.
        13. Answer :
          Class is a template or blue print of an object. It is used to encapsulate data members and member methods. It can contain fields, methods, constructor, static method etc.
        14. Answer :
          In F#, Constructor is somewhat different than other .Net languages. There are always primary constructors that may or may not have parameters. Scope of these parameters is throughout the class.
        15. Answer :
          In F#, self is used to refer current object of class type. Self is same as this keyword in C# and java. You can name the self identifier however you want. You are not restricted to names such as this or self as in .Net languages.
        16. Answer :
          In F#, static is a keyword. It is used to make static field or static method. Static is not the part of object. It has its own memory space to store static data. It is used to share common properties among objects.
        17. Answer :
          In F#, inheritance is a process in which child class acquires all the properties and behaviors of its parent class automatically. It is used to reuse the code.
        18. Answer :
          Method overriding is a feature of Object oriented programming approach. It helps to achieve polymorphism. We can achieve method overriding using inheritance.
        19. Answer :
          Abstract classes are those which don't provide full implementation of class members. It may contain non abstract methods. A class that inherits abstract class must provide implementation of all abstract methods of abstract class.
        20. Answer :
          F# provides Interface type. It provides pure abstraction. It is a collection of abstract methods.
        21. Answer :
          Type extension allows you to add new members to your previously defined object type.
        22. Answer :
          In F#, delegates are reference types. It allows us to call function as an object. It is a feature of this language. It gives advantage over the other functional programming languages.
        23. Answer :
          F# objects expression is a special expression. It creates a new instance of anonymous object type which is based on an existing base type, interface, or set of interfaces.
        24. Answer :
          Exception handling is a standard mechanism to handle abnormal termination of program. Exception is a situation that occurs during program execution. It may lead to terminate program abnormally like dividebyzero or nullpointer.
        25. Answer :
          In F#, you can create user defined exception. It provides flexibility to define custom exceptions according to requirement.
        26. Answer :
          In F#, you can throw exceptions explicitly. You are allowed to throw custom exception. You can also throw exceptions by using predefined methods of Exception like Failwith and InvalidArgs.
        27. Answer :
          The assert expression is a debugging feature of F#. You can use it to test an expression. It generates a system error dialog box upon failure in Debug mode.
        28. Answer :
          Module is a collection of classes, functions, and types. It helps to organize related code so we can maintain code easily.
        29. Answer :
          Access control specifies the accessibility of code. By using these you can specify the scope of data, method, class etc.
          There are 3 types of access control in F#.
          • Public or Default
          • Private
          • Internal
        30. Answer :
          F# manages resources with the help of use and using keywords. Resources may be data, a file or network etc. It acquires resource from operating system or other service provider so that it can be provided to other application.
        31. Answer :
          In F#, attribute is used to enable metadata for program code construct. Attribute can be applied to any construct like function, module, method and type.
        32. Answer :
          In F#, signature file contains information about the public signatures. Signatures can be of a set of program elements, such as types, namespaces, and modules.
        33. Answer :
          An import declaration specifies a module or namespace. You can reference it's elements without using a fully qualified name.
        34. Answer :
          Lazy computation is a feature of F#. Lazy computation does not evaluate immediately. It is executed when result is needed.
        35. Answer :
          In F#, you can produce documentation from triple-slash (///) code comments. XML comments can precede declarations in code files (.fs) or signature (.fsi) files.

No comments:

Post a Comment

How to register multiple implementations of the same interface in Asp.Net Core?

 Problem: I have services that are derived from the same interface. public interface IService { } public class ServiceA : IService { ...