There is no one-size-fit-all solutions. All depends on the context: - Insertion sort is good for small inputs - Shellsort is good for medium size inputs. - Mergesort is O(NlogN) but requires additional space. - Quicksort is O(NlogN) but can be O(n^2)
4 JavaScript interview questions What is Hoisting? What is Event Propagation? What are Template Literals? What are Promises?
Our society runs on software. Nowadays, nothing happens without software.
5 Random coding tips Disable distractions Ask effective questions Learn to debug Learn from your failures Examine all solutions before jumping in
Merge sort is O(NlogN), but requires additional space for the merging process. Quick sort is O(NlogN), but may degrade to O(N^2) Heap-sort is O(NlogN), but it's not stable (won't respect relative order of elements with the same value)
A shell is a command-line interpreter that reads user input and executes commands. The user input can come from the command line or from a file - a shell script.
Hash tables need to have some collision resolution strategy: - Chaining: use a linked list or binary search tree - Open addressing: probing techniques to find the next available slot - Perfect hashing: to minimize collisions (requires a more memory)
Interview tip Show attention to detail - If you get a question about linked lists, ask: singly or doubly? - If you get a question about strings, ask: ASCII or Unicode? You can assume it's the simplest for the interview setup, but these questions make you look good
There is a fundamental difference between algorithms, which always produce a correct result, and heuristics, which may usually do a good job but without providing any guarantee.
The assembly programming language was created in 1949. It was widely used in the EDSAC calculator, invented by Maurice Wilkes at University of Cambridge. This calculator could solve differential equations and discovered a 79 digit prime number (the largest known the time)
Better to become a programmer today, maybe a bad one, than staying in tutorial hell. Change your mindset from learner to programmer. Being a programmer implies being a learner.
In UNIX, a zombie is a process whose execution is completed but it still has an entry in the process table. This usually happens for child processes. Zombies can exhaust all available PIDs on the system preventing new process from being forked.
"If we wish to count lines of code, we should not regard them as lines produced but as lines spent." - Edsger Dijkstra
In the last month: What's the ratio between hours spend watching tutorials and reading articles and hours spend writing code?
Some JavaScript testing tools - Frameworks-> Mocha, Jest, Jasmine - Assertion-> Chai - Code coverage-> Istanbul - Spies, mocks, stubs-> Sinon, testdouble - BBD-> cucumber
Agile processes promote sustainable development The sponsors, developers, and users should be able to maintain a constant pace indefinitely agilemanifesto .org
Confidence comes from experience. Experience comes from doing. If you do, you'll make mistakes and sometimes "fail". Now you see mistakes and failures from what they are: part of the process. If you're making mistakes, it's a sign you're moving.
Some people, when confronted with a problem, think "I know, I'll use floating point." Now they have 1.99999999995 problems.
Threads All threads within a process share the same address space, file descriptors, and process-related attributes, but each executes in its own stack Since they can access the same memory, they need synchronization mechanisms, like mutexes or semaphores
An operating system is a program that controls the hardware of a computer and provides an environment for programs to run. Ex: Linux is the kernel used by the GNU operating system.