├── README.md ├── backend ├── dotnet │ ├── categories │ │ ├── ddd.md │ │ ├── dotnet.md │ │ ├── entity-framework.md │ │ └── oop.md │ └── questions │ │ └── entity-framework.md └── general │ ├── categories │ ├── cryptography.md │ ├── data-structure.md │ ├── design-patterns.md │ ├── docker.md │ ├── event-driven.md │ ├── fault-tolerant-system.md │ ├── git.md │ ├── microservices.md │ ├── network.md │ ├── nosql.md │ ├── os.md │ ├── sql.md │ ├── test.md │ └── web-servers.md │ └── questions │ └── microservices.md ├── images ├── framework-architecture.png ├── network-architecture.png └── stream-architecture.png └── interview.png /README.md: -------------------------------------------------------------------------------- 1 |

2 | Technical Interview 3 |

4 | 5 |

6 | Technical interview questions for Alibaba Travels Co. 7 |

8 | 9 |

10 | 11 |

12 | -------------------------------------------------------------------------------- /backend/dotnet/categories/ddd.md: -------------------------------------------------------------------------------- 1 | # DDD 2 | 3 | * Problem-Domain 4 | * Solution-Domain 5 | * Strategic Design 6 | * Ubiquitous Language 7 | * Bounded Context 8 | * Sub-domains 9 | * Tactical Design 10 | * Aggregate Root & Aggregate 11 | * Value-Object 12 | * Domain Services 13 | * Application Services 14 | * Domain Events 15 | * Context Mapping 16 | * Integration between BCs (Messaging, RPC, ...) 17 | * Entity Persistence 18 | * Patterns 19 | * Factory 20 | * Repository 21 | * Unit of Work 22 | * Event Sourcing 23 | * CQRS 24 | -------------------------------------------------------------------------------- /backend/dotnet/categories/dotnet.md: -------------------------------------------------------------------------------- 1 | # .NET 2 | 3 | * Common Language Runtime 4 | * Intermediate Language (IL) 5 | * Managed language 6 | * Managed code 7 | * Just-In-Time (JIT) 8 | 9 | ___ 10 | 11 | * Frameworks and Base Class Libraries 12 | * The Base Class Libraries (BCL) 13 | * Application framework layers 14 | * .NET Standard 15 | 16 | ![The Framework Architecture Diagram](./../../../images/framework-architecture.png) 17 | 18 | ___ 19 | 20 | * Data Types and Memory Allocation 21 | * Value Types 22 | * Reference Types 23 | * double Versus decimal 24 | * Stack 25 | * Heap 26 | 27 | ___ 28 | 29 | * Local method 30 | * CLR behind the scene implementations 31 | * new versus override 32 | * Initialization order 33 | * Boxing and unboxing 34 | * Struct 35 | * Ref Structs 36 | * Friend Assemblies 37 | * Interface implementations 38 | * Enum Type-Safety Issues 39 | 40 | ___ 41 | 42 | * Generics 43 | * Constraints 44 | * Covariance 45 | * Contravariance 46 | 47 | ___ 48 | 49 | * Events 50 | * Delegate 51 | * Parameter compatibility 52 | * Return type compatibility 53 | * Generic delegate type 54 | 55 | ___ 56 | 57 | * Lambda Expressions 58 | * Closures 59 | * Captured variables 60 | * Expression tree 61 | * Lambda Expressions Versus Local Methods 62 | 63 | ___ 64 | 65 | * `try` Statements and Exceptions 66 | * Enumeration and Iterators 67 | * The `Array` Class 68 | * `Nullable` Struct 69 | * Nullable Reference Types 70 | * Extension Methods 71 | * Anonymous Types 72 | * Tuple and ValueTuple 73 | 74 | ___ 75 | 76 | * Patterns 77 | * Property Patterns 78 | * Tuple Patterns 79 | * Positional Patterns 80 | * `var` Patterns 81 | * Constant Patterns 82 | 83 | ___ 84 | 85 | * Caller Info Attributes 86 | * CallerMemberName 87 | * CallerFilePath 88 | * CallerLineNumber 89 | 90 | ___ 91 | 92 | * Dynamic Binding 93 | * Unsafe Code and Pointers 94 | 95 | ___ 96 | 97 | * Preprocessor Directives 98 | * Conditional Attributes 99 | 100 | ___ 101 | 102 | * Comparing Strings 103 | * Equality comparison 104 | * Order comparison 105 | * Ordinal versus culture comparison 106 | 107 | ___ 108 | 109 | * StringBuilder 110 | * Text Encodings and Unicode 111 | 112 | ___ 113 | 114 | * Dates and Times 115 | * TimeSpan 116 | * DateTime and DateTimeOffset 117 | * Time Zones 118 | * Alternatives 119 | 120 | ___ 121 | 122 | * BigInteger 123 | * Complex 124 | * Random 125 | * The `Guid` Struct 126 | 127 | ___ 128 | 129 | * Standard Equality Protocols 130 | * == and != 131 | * The virtual object.Equals method 132 | * The static object.Equals method 133 | * The static object.ReferenceEquals method 134 | * The IEquatable interface 135 | * When Equals and == are not equal 136 | * Overriding GetHashCode 137 | * Overriding Equals 138 | 139 | ___ 140 | 141 | * Collections 142 | * BitArray 143 | * HashSet and SortedSet 144 | * Dictionaries 145 | * EqualityComparer 146 | 147 | ___ 148 | 149 | * LINQ Query 150 | * Deferred Execution 151 | * Subqueries 152 | * Interpreted Queries 153 | 154 | ___ 155 | 156 | * Garbage Collection and Memory Consumption 157 | * Finalizers 158 | * How the GC Works 159 | * Managed Memory Leaks 160 | 161 | ___ 162 | 163 | * Cross-Platform Diagnostics Tools 164 | * dotnet-counters 165 | * dotnet-trace 166 | * dotnet-dump 167 | 168 | ___ 169 | 170 | * Concurrency and Asynchrony and Threading 171 | * Concurrency vs Multi-Threading vs Async vs Parallelism 172 | * Single-core vs multicore or multiprocessor machine 173 | * Related Data-Structures (ex: ConcurrentDictionary, Channels) 174 | * Sleep 175 | * Yield 176 | * Blocking 177 | * Spinning 178 | * Local versus Shared State 179 | * Passing Data to a Thread 180 | * Exception Handling 181 | * Foreground versus Background Threads 182 | * IAsyncStateMachine 183 | * IAsyncEnumerable 184 | * IAsyncDisposable 185 | * Synchronization Contexts 186 | * `async void` 187 | * The Thread Pool 188 | * Worker Thread vs I/O Thread 189 | * Tasks 190 | * Long-running tasks & Task.Run() 191 | * AggregateException 192 | * awaiter.GetResult() vs .Result 193 | * TaskCompletionSource 194 | * Task.Delay 195 | * Awaiting 196 | * Asynchronous call graph execution 197 | * `ValueTask` 198 | * Precautions 199 | * `ConfigureAwait(false)` 200 | * Cancellation 201 | * Synchronization 202 | * Categories 203 | * Exclusive locking 204 | * lock Statement 205 | * Monitor.Enter and Monitor.Exit 206 | * Choosing the Synchronization Object 207 | * Deadlocks 208 | * Performance 209 | * Mutex 210 | * Locking and Thread Safety 211 | * Nonexclusive locking 212 | * Semaphore and SemaphoreSlim 213 | * Reader/Writer Locks 214 | * Signaling 215 | * AutoResetEvent 216 | * ManualResetEvent 217 | * CountdownEvent 218 | * Barrier Class 219 | * Lazy Initialization 220 | * Thread-Local Storage 221 | * Timers 222 | * SpinLock and SpinWait 223 | * Nonblocking synchronization techniques 224 | * Interlocked 225 | * memory barriers 226 | * volatile 227 | * Monitor.Wait and Monitor.Pulse 228 | 229 | ___ 230 | 231 | * Stream Architecture 232 | * Backing stores 233 | * FileStream 234 | * NetworkStream 235 | * MemoryStream 236 | * PipeStream 237 | * Named pipes 238 | * Anonymous pipes 239 | * Decorators 240 | * BufferedStream 241 | * DeflateStream 242 | * GZipStream 243 | * CryptoStream 244 | * Adapters 245 | * TextReader 246 | * TextWriter 247 | * StreamReader 248 | * StreamWriter 249 | * StringReader 250 | * StringWriter 251 | 252 | ![The Stream Architecture Diagram](./../../../images/stream-architecture.png) 253 | 254 | * Thread Safety 255 | * `File` and `Directory` class vs `FileInfo` and `DirectoryInfo` 256 | * Memory-Mapped Files 257 | 258 | ___ 259 | 260 | * Network Architecture 261 | 262 | ![The Network Architecture Diagram](./../../../images/network-architecture.png) 263 | 264 | * URIs 265 | * WebClient 266 | * HttpClient 267 | * HttpListener 268 | * TCP and UDP 269 | 270 | * Serialization Engines 271 | * XmlSerializer 272 | * JsonSerializer 273 | * The data contract serializer 274 | * The binary serializer 275 | 276 | * Assemblies 277 | * The Assembly Manifest 278 | * Resources and Satellite Assemblies 279 | * assembly loading 280 | * Assembly resolution 281 | * Assembly Load Contexts 282 | * AssemblyDependencyResolver 283 | 284 | * Reflection and Metadata 285 | * `GetType` Method vs `typeof` Operator 286 | * Obtaining a Type 287 | * Array types 288 | * Nested types 289 | * Type Names 290 | * Instantiating Types 291 | * Member Types 292 | * C# Members versus CLR Members 293 | * Late binding 294 | * Using Delegates for Performance 295 | * Attributes 296 | * Types 297 | * Bit-mapped 298 | * Custom 299 | * Pseudocustom 300 | * Properties and constructor parameters constraints 301 | 302 | ___ 303 | 304 | * Dynamic Code Generation 305 | * Generating IL with DynamicMethod 306 | * Emitting Assemblies and Types 307 | 308 | ___ 309 | 310 | * Dynamic Programming 311 | * Dynamic Language Runtime 312 | * Call Sites 313 | * Dynamic Member Overload Resolution 314 | * Anonymously Calling Members of a Generic Type 315 | * `ExpandoObject` 316 | 317 | ___ 318 | 319 | * Cryptography 320 | * Hash Algorithms 321 | * Hashing Passwords 322 | * Symmetric Encryption 323 | * Public-Key Encryption and Signing 324 | 325 | ___ 326 | 327 | * Parallel Programming 328 | * Channel 329 | * Data parallelism and task parallelism 330 | * PLINQ 331 | * The Parallel Class 332 | * Task Parallelism 333 | * Concurrent Collections 334 | * BlockingCollection 335 | 336 | ___ 337 | 338 | * Span and Memory 339 | * Spans and Slicing 340 | * Forward-Only Enumerators 341 | 342 | ___ 343 | 344 | * Native and COM Interoperability 345 | * Calling into Native DLLs 346 | * The Purpose of COM 347 | 348 | ___ 349 | 350 | * Regular Expressions 351 | * Compiled Regular Expressions 352 | * Character Escapes 353 | * Character Sets 354 | * Quantifiers 355 | 356 | ___ 357 | 358 | * The Roslyn Compiler 359 | * Roslyn Architecture 360 | * Parsing code into syntax trees (the syntactic layer) 361 | * Binding identifiers to symbols (the semantic layer) 362 | * Emitting Intermediate Language (IL) 363 | -------------------------------------------------------------------------------- /backend/dotnet/categories/entity-framework.md: -------------------------------------------------------------------------------- 1 | # Entity Framework 2 | 3 | * Change-Tracker 4 | * Inheritance (TPT, TPH) 5 | * Migrations 6 | * Code-First vs Database-First 7 | * Database-Provider mechanisms (SQL-Server, PostgreSQL, SQLite, In-Memory, ...) 8 | * Fluent-API 9 | * SaveChanges(), When & Why? 10 | * Transaction Management 11 | * DbContext Lifetime 12 | * Value-Converters 13 | -------------------------------------------------------------------------------- /backend/dotnet/categories/oop.md: -------------------------------------------------------------------------------- 1 | # Object-Oriented Programming 2 | 3 | * Paradigm 4 | * Principles 5 | * Inheritance 6 | * Encapsulation and Information Hiding 7 | * Method Hiding and Overriding 8 | 9 | * Abstraction 10 | * Data Abstraction 11 | * Procedural (Process,Control) Abstraction 12 | * Procedural Abstraction by Parameterization 13 | * Procedural Abstraction by Specification 14 | 15 | * Polymorphism 16 | * Ad hoc Polymorphism 17 | * Overloading Polymorphism 18 | * Coercion Polymorphism 19 | * Universal Polymorphism 20 | * Inclusion Polymorphism 21 | * Parametric polymorphism 22 | * Invariant Parametric polymorphism 23 | * Covariant Parametric polymorphism 24 | * Contravariant Parametric polymorphism 25 | 26 | * Dispatch 27 | * Static Dispatch 28 | * Dynamic Dispatch 29 | * Single dynamic dispatch 30 | * Multiple dynamic dispatch 31 | -------------------------------------------------------------------------------- /backend/dotnet/questions/entity-framework.md: -------------------------------------------------------------------------------- 1 | # Entity Framework 2 | 3 | * Change-Tracker 4 | * What's change-tracker? 5 | * What's .AsNoTracking()? 6 | * How EF detect changes when you update a property value? 7 | * Inheritance (TPT, TPH) 8 | * What's TPT? 9 | * What's TPH? 10 | * Migrations 11 | * What are migrations? 12 | * What we achieve with them? 13 | * Code-First vs Database-First 14 | * What's code-first approach? 15 | * What's database-first approach? 16 | * How to use code-first when we have an existing database schema? 17 | * Database-Provider mechanisms (SQL-Server, PostgreSQL, SQLite, In-Memory, ...) 18 | * What are Providers in EF-Core? 19 | * How can we use EF-Core in unit-tests? 20 | * Fluent-API 21 | * What's fluent-api? 22 | * Advantages and downsides against Attributes 23 | * SaveChanges(), When & Why? 24 | * Transaction Management 25 | * How can we rollback a failed transaction in EF? 26 | * DbContext Lifetime 27 | * What's EF-Core's default lifetime? Do you know Why? 28 | * Can we use Singleton as DbContext's lifetime? Why? 29 | * Value-Converters 30 | * What are value-converters in EF? 31 | * What are its usages? 32 | -------------------------------------------------------------------------------- /backend/general/categories/cryptography.md: -------------------------------------------------------------------------------- 1 | # Cryptography 2 | 3 | * Types of Attacks 4 | * Cryptoanalysis 5 | * Brute Force Attack 6 | * Types of Cryptography 7 | * Symmetric 8 | * Asymmetric 9 | * Block vs Stream Cipher 10 | * DES 11 | * Symmetric 12 | * Block Cipher (64 bits each) 13 | * Insecure due to the relatively short 56-bit key size 14 | * Triple DES 15 | * AES 16 | * Symmetric 17 | * Also known as Rijndael 18 | * Block Cipher (128 bits each) 19 | * RSA 20 | * Asymmetric 21 | * Rivest–Shamir–Adleman 22 | * Encryption key is public and distinct from the decryption key, which is kept secret (private) 23 | * Diffie-Hellman key exchange 24 | * Digital signature 25 | * Digital certificate 26 | * SSL and SSL certificate 27 | * SSL/TLS handshake protocol 28 | -------------------------------------------------------------------------------- /backend/general/categories/data-structure.md: -------------------------------------------------------------------------------- 1 | # Data Structure 2 | 3 | * Time complexity 4 | * Space complexity 5 | * Array 6 | * Linked-List 7 | * Stack 8 | * Queue 9 | * Hash table 10 | * Collision 11 | * Bubble sort 12 | * Selection sort 13 | * Insertion sort 14 | * Merge sort 15 | * Quick sort 16 | * Linear search 17 | * Binary search 18 | * Binary search tree 19 | * Traversing tree approaches 20 | * Breadth first 21 | * Depth first 22 | * Pre-order 23 | * Post-order 24 | * In-order 25 | * Balanced tree 26 | * Self Balancing Trees 27 | * AVL Tree 28 | * Red-Black Tree 29 | * B-Tree 30 | * Heaps 31 | * Heap sort 32 | * Priority Queue 33 | * Tries (Digital or Radix or Prefix tree) 34 | * Graphs 35 | * Adjacency matrix 36 | * Adjacency List 37 | * Traverse 38 | * Depth-First 39 | * Breadth-First 40 | * Topological sort 41 | * Cycle detection 42 | -------------------------------------------------------------------------------- /backend/general/categories/design-patterns.md: -------------------------------------------------------------------------------- 1 | # Design Patterns 2 | 3 | * Design Patterns 4 | * Creational 5 | * Factory Method 6 | * Abstract Factory 7 | * Builder 8 | * Singleton 9 | * Structural 10 | * Facade 11 | * Proxy 12 | * Decorator 13 | * Composite 14 | * Adapter 15 | * Flyweight 16 | * Bridge 17 | * Behavioral 18 | * Strategy pattern 19 | * Builder pattern 20 | * Template method 21 | * Visitor 22 | * Chain of Responsibility 23 | * Mediator 24 | * State 25 | * Observer 26 | * Principles 27 | * SOLID 28 | * Dependency Inversion vs Inversion Of Control vs Dependency Injection 29 | * DRY 30 | * KISS 31 | * YAGNI 32 | * Separation of Concerns 33 | * Least Knowledge 34 | * The Hollywood 35 | * Favor Composition over Inheritance 36 | * Program to an interface, not an implementation 37 | * Code Smells 38 | * Bloaters 39 | * Long Method 40 | * Large Class 41 | * Primitive Obsession 42 | * Long Parameter List 43 | * Data Clumps 44 | * Object-Orientation Abusers 45 | * Switch Statements 46 | * Temporary Field 47 | * Refused Bequest 48 | * Alternative Classes with Different Interfaces 49 | * Change Preventers 50 | * Divergent Change 51 | * Shotgun Surgery 52 | * Parallel Inheritance Hierarchies 53 | * Dispensables 54 | * Comments 55 | * Duplicate Code 56 | * Lazy Class 57 | * Data Class 58 | * Dead Code 59 | * Speculative Generality 60 | * Couplers 61 | * Feature Envy 62 | * Inappropriate Intimacy 63 | * Message Chains 64 | * Middle Man 65 | -------------------------------------------------------------------------------- /backend/general/categories/docker.md: -------------------------------------------------------------------------------- 1 | # Docker 2 | 3 | * Basic Definition 4 | * .Net Containerization 5 | * Containerization Tools 6 | * Compose 7 | * Compose CLI -------------------------------------------------------------------------------- /backend/general/categories/event-driven.md: -------------------------------------------------------------------------------- 1 | # Event-Driven 2 | 3 | ## Definition 4 | * What's an Event-Driven Architecture? 5 | * What's an Event? 6 | * What's an Event Producer? 7 | * What's an Event Emitter (Agents)? 8 | * What's an Event Notification? 9 | * What's an Event Handler? 10 | * What's an Event Loop? 11 | * What's an Event Carried State Transfer? 12 | * What's an Event Store? 13 | * What's an Event Sourcing? 14 | * What's an Event Queue? 15 | * What's an Event Mediator? 16 | * What's an Event Channel? 17 | * What's an Event Processor? 18 | * What's an Event Consumer? 19 | * What are the benefits of Event-Driven Architecture? 20 | * What are the considerations of Event-Driven Architecture? 21 | * Advantages of the Event-driven architecture? 22 | * Explain Orchestration and Choreographing differences? 23 | * How to resolve duplicates problem? 24 | * What's idempotence? 25 | ## Patterns 26 | * Event Sourcing 27 | * How does Event Sourcing work? 28 | * How Event Sourcing reliably/atomically updates the database and publish messages/events? 29 | * What differences between Event Sourcing and Outbox Pattern are there? 30 | * Outbox Pattern 31 | * How does Outbox Pattern work? 32 | * How Outbox Pattern reliably/atomically updates the database and publish messages/events? 33 | * What differences between Event Sourcing and Outbox Pattern are there? 34 | * Explain Change Data Capture (CDC)? 35 | * CQRS 36 | * How to implement a query that retrieves data from multiple services in a microservice architecture? 37 | ## Topology 38 | * What types of EDA Topology are there? 39 | * Mediator Topology 40 | * Broker Topology 41 | * Which EDA Topology Should You Choose? 42 | ## Event Driven Architecture Models 43 | * Publish/Subscribe (Pub/Sub) Model 44 | * Event streaming model 45 | * Simple Event Model 46 | * Stream Event Model 47 | * Complex Event Model 48 | ## Event-Driven Architecture Flows Layer 49 | * EVENT Generator 50 | * Event Channels 51 | * Event Processing 52 | * Event-Driven Downstream Activity 53 | 54 | -------------------------------------------------------------------------------- /backend/general/categories/fault-tolerant-system.md: -------------------------------------------------------------------------------- 1 | # Fault-Tolerant System 2 | 3 | * Asynchronous communication 4 | * Fallback 5 | * Timeouts 6 | * Retries 7 | * Circuit breaker 8 | * Deadline 9 | * Rate limiter 10 | * Cascading failures 11 | * Single point of failure 12 | -------------------------------------------------------------------------------- /backend/general/categories/git.md: -------------------------------------------------------------------------------- 1 | # Git 2 | 3 | * HEAD 4 | * Remote 5 | * Merge 6 | * Rebase 7 | * Revert 8 | * Cherry Pick 9 | * Pull Request 10 | * Submodules 11 | * Reset 12 | * Working area VS Staging area 13 | * bisect 14 | -------------------------------------------------------------------------------- /backend/general/categories/microservices.md: -------------------------------------------------------------------------------- 1 | # Microservices 2 | 3 | * Monolith's downsides and advantages 4 | * Microservices downsides and advantages 5 | * Service Registry & Discovery 6 | * Load-Balancing 7 | * Distributed Transactions 8 | * Metrics, Monitoring, Tracing, Logging 9 | * Key-Vaults 10 | * Service-Mesh 11 | * Communication Patterns 12 | * Message Delivery Semantics 13 | * Retry Mechanisms 14 | -------------------------------------------------------------------------------- /backend/general/categories/network.md: -------------------------------------------------------------------------------- 1 | # Network 2 | 3 | * Basic concepts 4 | * OSI model 5 | * How web works 6 | * TCP/IP Model 7 | * NAT 8 | * Basic knowledge of firewalls and waf 9 | 10 | * Application layer protocols 11 | * HTTP/1 vs HTTP/2.* vs HTTP/3 12 | * Keep-Alive concept pros and cons in different versions -------------------------------------------------------------------------------- /backend/general/categories/nosql.md: -------------------------------------------------------------------------------- 1 | # NoSQL 2 | 3 | * SQL vs NoSQL 4 | * Data Models 5 | * Distribution Models 6 | * Types of NoSQL Databases 7 | * CAP Theorem 8 | * Consistency In Distribution 9 | -------------------------------------------------------------------------------- /backend/general/categories/os.md: -------------------------------------------------------------------------------- 1 | # Operating System 2 | 3 | * Process Control Block 4 | * Degree of multiprogramming 5 | * Short Term Scheduler 6 | * Also known as the CPU scheduler 7 | * decides which of the ready, in-memory processes is to be executed (allocated a CPU) 8 | * Medium Term Scheduler 9 | * Removes the processes from the memory 10 | * Long Term Scheduler 11 | * Also called a job scheduler 12 | * Selects processes from the queue and loads them into memory for CPU scheduling 13 | * Loading process into memory 14 | * Contiguous allocation 15 | * Fixed partitioning 16 | * Dynamic partitioning 17 | * Compaction 18 | * Non-contagious allocation 19 | * Frame 20 | * Page and page table 21 | * Paging and multi-level paging 22 | * Virtual memory 23 | * Page hit and fault 24 | * Process synchronization 25 | * Lock variable 26 | * Binary and counting semaphore 27 | * File system 28 | * File allocation table (FAT) 29 | * Seek Time 30 | * Rotational latency 31 | * Disk scheduling 32 | * First come first served 33 | * Shortest seek time first 34 | * Scan 35 | * C-Scan 36 | * Look 37 | * C-Look 38 | * Kernel 39 | * Fork 40 | * Context switching 41 | * User-level and kernel-level thread 42 | * Process and thread and scheduler 43 | * Multi-threading and multi-processing 44 | * Starvation 45 | -------------------------------------------------------------------------------- /backend/general/categories/sql.md: -------------------------------------------------------------------------------- 1 | # SQL Server 2 | 3 | * Normalization 4 | * Suitable for online transaction processing systems (OLTP) 5 | * 1NF 6 | * 2NF 7 | * 3NF 8 | * Denormalization 9 | * Suitable for online analytical processing systems (OLAP) 10 | * Primary-key constraint 11 | * Enforces the uniqueness of rows and also disallows NULLs in the constraint attributes 12 | * To enforce the uniqueness of the logical primary-key constraint, SQL Server will create 13 | a unique index behind the scenes. A unique index is a physical mechanism used by 14 | SQL Server to enforce uniqueness 15 | * Unique constraint 16 | * SQL Server will create a unique index behind the scenes as the physical mechanism to enforce 17 | the logical unique constraint. 18 | * Two NULLs value were equal to each other 19 | * Foreign-key constraint 20 | * Check constraint 21 | * Default constraint 22 | * Inheritance 23 | * Table-per-Type 24 | * Table-per-Hierarchy 25 | * Index 26 | * Clustered 27 | * Nonclustered 28 | * Three-Valued predicate logic 29 | * Logical query processing 30 | * All-at-once operations 31 | * Self-Contained sub query 32 | * Scalar 33 | * Multivalued 34 | * Correlated sub query 35 | * Table expression 36 | * Derived table 37 | * View 38 | * CTE 39 | * Recursive CTE 40 | * Inline table-valued function 41 | * Cross and outer apply operator 42 | * Window functions 43 | * Ranking 44 | * ROW_NUMBER 45 | * RANK 46 | * DENSE_RANK 47 | * NTILE 48 | * Offset 49 | * LEAD 50 | * LAG 51 | * FIRST_VALUE 52 | * LAST_VALUE 53 | * Inserting data 54 | * INSERT VALUES 55 | * INSERT SELECT 56 | * INSERT EXEC 57 | * SELECT INTO 58 | * BULK INSERT 59 | * The identity property and the sequence object 60 | * Deleting data 61 | * Delete statement 62 | * Truncate 63 | * Merge statement 64 | * The OUTPUT clause and nested DML 65 | * Transactions and isolation levels 66 | * ACID property 67 | * Isolation Levels 68 | * READ UNCOMMITTED 69 | * Dirty reads 70 | * READ COMMITTED 71 | * *Non-Repeatable Reads* or *Inconsistent Analysis* 72 | * REPEATABLE READ 73 | * Prevent phenomenon called a lost update 74 | * SERIALIZABLE 75 | * Prevent phenomenon called phantom reads 76 | * Isolation levels based on row versioning 77 | * SNAPSHOT 78 | * READ COMMITTED SNAPSHOT 79 | * Deadlocks 80 | * SQL Server chooses to terminate the transaction that did the least work 81 | (based on the activity written to the transaction log) 82 | * DEADLOCK_PRIORITY 83 | * Deadly embrace deadlock 84 | * Temporary tables 85 | * Local 86 | * Global 87 | * Table variable 88 | * Dynamic SQL 89 | * The *EXEC* command 90 | * The *sp_executesql* stored procedure 91 | * User-defined functions 92 | * Scalar 93 | * table-valued 94 | * Stored procedure 95 | * trigger 96 | * DML 97 | * After 98 | * Permanent tables 99 | * Instead of 100 | * Permanent tables 101 | * Views 102 | * DDL 103 | * Database scope 104 | * For events with a database scope, such as CREATE TABLE 105 | * Server scope 106 | * For events with a server scope, such as CREATE DATABASE 107 | * SQL Server supports only after DDL triggers; it doesn’t support instead of DDL triggers 108 | * Can be used for 109 | * Auditing 110 | * Policy enforcement 111 | * Change management 112 | -------------------------------------------------------------------------------- /backend/general/categories/test.md: -------------------------------------------------------------------------------- 1 | # Test 2 | 3 | * Test Pyramid & Code-Coverage 4 | * Unit-Tests 5 | * Integration-Tests 6 | * E2E-Tests 7 | * TDD 8 | * BDD 9 | -------------------------------------------------------------------------------- /backend/general/categories/web-servers.md: -------------------------------------------------------------------------------- 1 | # Web-Servers 2 | 3 | * Different Web-Servers (Nginx, IIS, Kestrel) 4 | * In-Process vs Out-Process hosting 5 | * Load Balancing 6 | * Reverse Proxy (Proxy vs ReverseProxy, what are the diferences?) 7 | * URL Rewriting 8 | * Request Filtering & Logging 9 | * Request Limiting & Throttling 10 | -------------------------------------------------------------------------------- /backend/general/questions/microservices.md: -------------------------------------------------------------------------------- 1 | # Microservices 2 | 3 | * What are monolith's downsides and advantages? 4 | * What are microservices downsides and advantages? 5 | * Service Registry & Discovery 6 | * What's service registry? 7 | * Tools for service-discovery (Consul, Redis, ...) 8 | * Where do we need them? 9 | * Load-Balancing 10 | * What are the application requirements for load-balancing? 11 | * What's HA? 12 | * What's replication? 13 | * What's sharding? 14 | * What is the difference between Horizontal-Scaling and Vertical-Scaling? 15 | * Distributed Transactions 16 | * What's SAGA? 17 | * What's two-phase commit? 18 | * Metrics, Monitoring, Tracing, Logging 19 | * What's CorrelationId? 20 | * What's distributed tracing? Why we need that? 21 | * What are metrics? How to collect them? 22 | * What's monitoring? How it's related to the metrics? 23 | * What's centralized logging? 24 | * What's ELK? 25 | * How to keep the logs while the logging provider is down? 26 | * Key-Vaults 27 | * Where to store secret things like passwords, api-keys, ...? 28 | * What's key-vault? 29 | * Service-Mesh 30 | * What's service-mesh? Why we need that? 31 | * What's Side-Car pattern? 32 | * Communication Patterns (Inbox/Outbox, Fan-in/Fan-Out, Pub/Sub, Peer-2-Peer, ...) 33 | * How microservices can talk to each other? 34 | * What's gRPC? What's protobuf? 35 | * Message Delivery Semantics (At-Least-Once, At-Most-Once, Exactly-Once) + Retry 36 | * What's at-least-once in messaging? 37 | * What's at-most-once in messaging? 38 | * How to achieve exactly-once delivery in messaging? 39 | * What should we do when a message not get delivered? 40 | * What's retry pattern? 41 | -------------------------------------------------------------------------------- /images/framework-architecture.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MoienTajik/technical-interview/fdd63aaad1a8f659a4c43a2a10948fd17381f43e/images/framework-architecture.png -------------------------------------------------------------------------------- /images/network-architecture.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MoienTajik/technical-interview/fdd63aaad1a8f659a4c43a2a10948fd17381f43e/images/network-architecture.png -------------------------------------------------------------------------------- /images/stream-architecture.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MoienTajik/technical-interview/fdd63aaad1a8f659a4c43a2a10948fd17381f43e/images/stream-architecture.png -------------------------------------------------------------------------------- /interview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MoienTajik/technical-interview/fdd63aaad1a8f659a4c43a2a10948fd17381f43e/interview.png --------------------------------------------------------------------------------