Thursday, June 3, 2021

PostgreSQL Features

 

List of PostgreSQL Features for quick review before interview

Source:https://www.postgresql.org/about/

Below is an inexhaustive list of various features found in PostgreSQL, with more being added in every major release:

  • Data Types
    • Primitives: Integer, Numeric, String, Boolean
    • Structured: Date/Time, Array, Range, UUID
    • Document: JSON/JSONB, XML, Key-value (Hstore)
    • Geometry: Point, Line, Circle, Polygon
    • Customizations: Composite, Custom Types
  • Data Integrity
    • UNIQUE, NOT NULL
    • Primary Keys
    • Foreign Keys
    • Exclusion Constraints
    • Explicit Locks, Advisory Locks
  • Concurrency, Performance
    • Indexing: B-tree, Multicolumn, Expressions, Partial
    • Advanced Indexing: GiST, SP-Gist, KNN Gist, GIN, BRIN, Covering indexes, Bloom filters
    • Sophisticated query planner / optimizer, index-only scans, multicolumn statistics
    • Transactions, Nested Transactions (via savepoints)
    • Multi-Version concurrency Control (MVCC)
    • Parallelization of read queries and building B-tree indexes
    • Table partitioning
    • All transaction isolation levels defined in the SQL standard, including Serializable
    • Just-in-time (JIT) compilation of expressions
  • Reliability, Disaster Recovery
    • Write-ahead Logging (WAL)
    • Replication: Asynchronous, Synchronous, Logical
    • Point-in-time-recovery (PITR), active standbys
    • Tablespaces
  • Security
    • Authentication: GSSAPI, SSPI, LDAP, SCRAM-SHA-256, Certificate, and more
    • Robust access-control system
    • Column and row-level security
    • Multi-factor authentication with certificates and an additional method
  • Extensibility
    • Stored functions and procedures
    • Procedural Languages: PL/PGSQL, Perl, Python (and many more)
    • SQL/JSON path expressions
    • Foreign data wrappers: connect to other databases or streams with a standard SQL interface
    • Customizable storage interface for tables
    • Many extensions that provide additional functionality, including PostGIS
  • Internationalization, Text Search
    • Support for international character sets, e.g. through ICU collations
    • Case-insensitive and accent-insensitive collations
    • Full-text search

There are many more features that you can discover in the PostgreSQL documentation. Additionally, PostgreSQL is highly extensible: many features, such as indexes, have defined APIs so that you can build out with PostgreSQL to solve your challenges.

Tuesday, June 1, 2021

Topics to Prepare for an Interview: (C, Linux and Networking Interview Questions)

 

This article captures the list of topics to be covered/prepared for an Interview in Networking domain with C as a programming language and Linux as a work environment. This will help the candidate/employee who is experienced, having no idea of how to prepare (begin with) for an interview. All the topics covered here are collected from different experienced employees who gave interview for different companies on Networking domain.

Following are the list of topics which needs to be covered in order to prepare for an interview in Networking domain,

1.    Storage classes in C (Important)

>> Most of the questions will be on static and extern variables

2.    Memory layout of a process in Linux

>> Correlation of memory layout with storage classes

3.    Inter Process Communication (IPC)

>> Message queue, Shared memory, Pipes, FIFO, Semaphore, IOCTL, Sockets -Learn each concept in detail with their use cases

4.    Multi-threading

>> POSIX threads and mutex, critical section problem

5.    Process synchronization Techniques

>> Semaphores and Mutex and their use cases

6.    Socket programming

>> Different types of sockets such as TCP, UDP, RAW, NETLINK, UNIX Domain socket and their use cases (When to use)

7.    C data structures

>> Linked list (Singly linked list and Doubly linked list), Stack, Queue - (add a node (add a node to the front of the list or at the end of the list), delete a node (delete first node or delete a node from the end of the list), reverse a linked list, push-pop operations on stack, detect a loop in linked list, intersection in linked list etc.

8.    Knowledge about your core domain you worked on (Important)

>> Prepare well on your domain (Ex. Firmware, Wi-Fi, L2/L3 etc.) and you should be in a position to explain all the works that you have done on your domain.

9.    Pointers and de-referencing

>> Recall basics of pointers (Good to have deep knowledge on pointers and its use cases)

10. Implementation of our own functions for memcpy, strrev, memmove, sizeof, strlen etc.

>> Understand how each function is actually implemented.

11. Concepts of networking protocols such as DHCP, ARP, ICMP, TCP/IP, NAT, Routing, switching, VLAN etc.

>> Good to know the use cases and scenarios

12. Operations on bits (Important)

>> Toggle a bit, clear a bit, set a bit, count number of bits set in a given number, reverse bits of a number etc.

13. Operating System concepts

>> Process states, scheduling, dispatching, paging, page fault, virtual memory concept etc.

14. Linux internals

>> Interrupt, ISR, system boot up sequence, software interrupts, system calls etc.

15. Dynamic memory allocation concepts

>> malloc, calloc, realloc (return value of these functions and how these memory allocations implemented)

16. Good understanding of C programming language.

>> Brush up on C programming concepts such as function pointer, call back function, pointer arithmetic, MACRO, inline functions, structures padding and packing etc. 



Hope this article will help you to start your preparation for the interview. I will add more topics in future. Keep visiting this space for more update.