\documentclass[10pt,a4paper]{article} % Packages \usepackage{fancyhdr} % For header and footer \usepackage{multicol} % Allows multicols in tables \usepackage{tabularx} % Intelligent column widths \usepackage{tabulary} % Used in header and footer \usepackage{hhline} % Border under tables \usepackage{graphicx} % For images \usepackage{xcolor} % For hex colours %\usepackage[utf8x]{inputenc} % For unicode character support \usepackage[T1]{fontenc} % Without this we get weird character replacements \usepackage{colortbl} % For coloured tables \usepackage{setspace} % For line height \usepackage{lastpage} % Needed for total page number \usepackage{seqsplit} % Splits long words. %\usepackage{opensans} % Can't make this work so far. Shame. Would be lovely. \usepackage[normalem]{ulem} % For underlining links % Most of the following are not required for the majority % of cheat sheets but are needed for some symbol support. \usepackage{amsmath} % Symbols \usepackage{MnSymbol} % Symbols \usepackage{wasysym} % Symbols %\usepackage[english,german,french,spanish,italian]{babel} % Languages % Document Info \author{DesertGarnet} \pdfinfo{ /Title (c-azure-devops-tech-interview.pdf) /Creator (Cheatography) /Author (DesertGarnet) /Subject (C\# Azure DevOps Tech Interview Cheat Sheet) } % Lengths and widths \addtolength{\textwidth}{6cm} \addtolength{\textheight}{-1cm} \addtolength{\hoffset}{-3cm} \addtolength{\voffset}{-2cm} \setlength{\tabcolsep}{0.2cm} % Space between columns \setlength{\headsep}{-12pt} % Reduce space between header and content \setlength{\headheight}{85pt} % If less, LaTeX automatically increases it \renewcommand{\footrulewidth}{0pt} % Remove footer line \renewcommand{\headrulewidth}{0pt} % Remove header line \renewcommand{\seqinsert}{\ifmmode\allowbreak\else\-\fi} % Hyphens in seqsplit % This two commands together give roughly % the right line height in the tables \renewcommand{\arraystretch}{1.3} \onehalfspacing % Commands \newcommand{\SetRowColor}[1]{\noalign{\gdef\RowColorName{#1}}\rowcolor{\RowColorName}} % Shortcut for row colour \newcommand{\mymulticolumn}[3]{\multicolumn{#1}{>{\columncolor{\RowColorName}}#2}{#3}} % For coloured multi-cols \newcolumntype{x}[1]{>{\raggedright}p{#1}} % New column types for ragged-right paragraph columns \newcommand{\tn}{\tabularnewline} % Required as custom column type in use % Font and Colours \definecolor{HeadBackground}{HTML}{333333} \definecolor{FootBackground}{HTML}{666666} \definecolor{TextColor}{HTML}{333333} \definecolor{DarkBackground}{HTML}{A3A3A3} \definecolor{LightBackground}{HTML}{F3F3F3} \renewcommand{\familydefault}{\sfdefault} \color{TextColor} % Header and Footer \pagestyle{fancy} \fancyhead{} % Set header to blank \fancyfoot{} % Set footer to blank \fancyhead[L]{ \noindent \begin{multicols}{3} \begin{tabulary}{5.8cm}{C} \SetRowColor{DarkBackground} \vspace{-7pt} {\parbox{\dimexpr\textwidth-2\fboxsep\relax}{\noindent \hspace*{-6pt}\includegraphics[width=5.8cm]{/web/www.cheatography.com/public/images/cheatography_logo.pdf}} } \end{tabulary} \columnbreak \begin{tabulary}{11cm}{L} \vspace{-2pt}\large{\bf{\textcolor{DarkBackground}{\textrm{C\# Azure DevOps Tech Interview Cheat Sheet}}}} \\ \normalsize{by \textcolor{DarkBackground}{DesertGarnet} via \textcolor{DarkBackground}{\uline{cheatography.com/130725/cs/31072/}}} \end{tabulary} \end{multicols}} \fancyfoot[L]{ \footnotesize \noindent \begin{multicols}{3} \begin{tabulary}{5.8cm}{LL} \SetRowColor{FootBackground} \mymulticolumn{2}{p{5.377cm}}{\bf\textcolor{white}{Cheatographer}} \\ \vspace{-2pt}DesertGarnet \\ \uline{cheatography.com/desertgarnet} \\ \end{tabulary} \vfill \columnbreak \begin{tabulary}{5.8cm}{L} \SetRowColor{FootBackground} \mymulticolumn{1}{p{5.377cm}}{\bf\textcolor{white}{Cheat Sheet}} \\ \vspace{-2pt}Not Yet Published.\\ Updated 10th March, 2022.\\ Page {\thepage} of \pageref{LastPage}. \end{tabulary} \vfill \columnbreak \begin{tabulary}{5.8cm}{L} \SetRowColor{FootBackground} \mymulticolumn{1}{p{5.377cm}}{\bf\textcolor{white}{Sponsor}} \\ \SetRowColor{white} \vspace{-5pt} %\includegraphics[width=48px,height=48px]{dave.jpeg} Measure your website readability!\\ www.readability-score.com \end{tabulary} \end{multicols}} \begin{document} \raggedright \raggedcolumns % Set font size to small. Switch to any value % from this page to resize cheat sheet text: % www.emerson.emory.edu/services/latex/latex_169.html \footnotesize % Small font. \begin{multicols*}{2} \begin{tabularx}{8.4cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{8.4cm}}{\bf\textcolor{white}{DevOps Basics}} \tn % Row 0 \SetRowColor{LightBackground} \mymulticolumn{1}{x{8.4cm}}{DevOps is a mixture of development and ops, sometimes including CI/CD, Agile planning, and monitoring applications.} \tn % Row Count 3 (+ 3) % Row 1 \SetRowColor{white} \mymulticolumn{1}{x{8.4cm}}{Used because of it's easy delivery of software and for benefits of reliability, security, and stability.} \tn % Row Count 6 (+ 3) % Row 2 \SetRowColor{LightBackground} \mymulticolumn{1}{x{8.4cm}}{DevOps also help deliver small results in frequent loops so that major projects can be completed in minor chunks increasing productivity.} \tn % Row Count 9 (+ 3) % Row 3 \SetRowColor{white} \mymulticolumn{1}{x{8.4cm}}{{\bf{Azure DevOps Services:}}\{\{nl\}\} Azure Boards\{\{nl\}\} Azure Pipelines\{\{nl\}\} Azure Repos\{\{nl\}\} Azure Artifacts \{\{nl\}\} Azure Test Plans\}} \tn % Row Count 12 (+ 3) \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{8.4cm}{x{2 cm} x{6 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{8.4cm}}{\bf\textcolor{white}{Cloud Deployment Models}} \tn % Row 0 \SetRowColor{LightBackground} Public Cloud & The infrastructure is owned by your cloud provider and the server that you are using could be a multi-tenant system. \tn % Row Count 4 (+ 4) % Row 1 \SetRowColor{white} Private Cloud & The infrastructure is owned by you or your cloud provider gives you that service exclusively. Example: Hosting your website on your servers, or hosting your website with the cloud provider on a dedicated server. \tn % Row Count 12 (+ 8) % Row 2 \SetRowColor{LightBackground} Hybrid Cloud & When you use both Public Cloud, Private Cloud together, it is called Hybrid Cloud. For Example: Using your in-house servers for confidential data, and the public cloud for hosting your company's public facing website. This type of setup would be a hybrid cloud. \tn % Row Count 21 (+ 9) \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{8.4cm}{x{0.912 cm} x{3.344 cm} x{3.344 cm} } \SetRowColor{DarkBackground} \mymulticolumn{3}{x{8.4cm}}{\bf\textcolor{white}{Service Types Comparison}} \tn % Row 0 \SetRowColor{LightBackground} & Advantages & Disadvatages \tn % Row Count 1 (+ 1) % Row 1 \SetRowColor{white} {\bf{Public}} & + High \seqsplit{Scalability/Agility} \{\{nl\}\}+ PAYG (No CapEx, OpEx model) \{\{nl\}\}+ Not responsible for hardware maintenance \{\{nl\}\}+ Minimal technical knowledge required & - May not be able to meet specific security requirements \{\{nl\}\}- May not be able to meet specific compliance requirements \{\{nl\}\}- You don't own the hardware and may not be able to manage them as you wish \tn % Row Count 13 (+ 12) % Row 2 \SetRowColor{LightBackground} {\bf{Private}} & + You have complete control \{\{nl\}\}+ Can meet strict security and compliance requirements & - Upfront CapEx costs \{\{nl\}\}- Owning equipment limits agility to scale \{\{nl\}\}- Requires high technical knowledge \tn % Row Count 20 (+ 7) % Row 3 \SetRowColor{white} {\bf{Hybrid}} & + Advantages of both Public and Private & - Can be more expensive than selecting one deployment model \{\{nl\}\}- Can be more complicated to set up and manage \tn % Row Count 27 (+ 7) \hhline{>{\arrayrulecolor{DarkBackground}}---} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{8.4cm}{x{3.04 cm} x{4.96 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{8.4cm}}{\bf\textcolor{white}{Azure Networking Services}} \tn % Row 0 \SetRowColor{LightBackground} Virtual Network & Connects VMs to incoming Virtual Private Network (VPN) connections \tn % Row Count 3 (+ 3) % Row 1 \SetRowColor{white} Load Balancer & Balances inbound and outbound connections to applications or service endpoint \tn % Row Count 7 (+ 4) % Row 2 \SetRowColor{LightBackground} VPN Gateway & Accesses Azure Virtual Networks through high-performance VPN gateways \tn % Row Count 10 (+ 3) % Row 3 \SetRowColor{white} Application Gateway & Optimizes app server farm delivery while increasing application security \tn % Row Count 13 (+ 3) % Row 4 \SetRowColor{LightBackground} Content Delivery Network & Delivers high-bandwidth content to customers globally \tn % Row Count 16 (+ 3) \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{8.4cm}{x{3.52 cm} x{4.48 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{8.4cm}}{\bf\textcolor{white}{Azure Databases}} \tn % Row 0 \SetRowColor{LightBackground} CosmosDB & Globally distributed database that supports NoSQL options \tn % Row Count 3 (+ 3) % Row 1 \SetRowColor{white} Azure SQL Database & Fully managed relational database with auto-scale, integral intelligence, and robust security \tn % Row Count 8 (+ 5) % Row 2 \SetRowColor{LightBackground} Azure Database Migration Service & Migrates your databases to the cloud with no application code changes \tn % Row Count 12 (+ 4) % Row 3 \SetRowColor{white} Azure SQL Data Warehouse & Fully managed data warehouse with integral security at every level of scale at no extra cost \tn % Row Count 17 (+ 5) \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{8.4cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{8.4cm}}{\bf\textcolor{white}{Web Architecture Best Practices}} \tn % Row 0 \SetRowColor{LightBackground} \mymulticolumn{1}{x{8.4cm}}{System flexibility} \tn % Row Count 1 (+ 1) % Row 1 \SetRowColor{white} \mymulticolumn{1}{x{8.4cm}}{Component reusability} \tn % Row Count 2 (+ 1) % Row 2 \SetRowColor{LightBackground} \mymulticolumn{1}{x{8.4cm}}{Clarity and well-thought structure of your code} \tn % Row Count 3 (+ 1) % Row 3 \SetRowColor{white} \mymulticolumn{1}{x{8.4cm}}{Scalability} \tn % Row Count 4 (+ 1) % Row 4 \SetRowColor{LightBackground} \mymulticolumn{1}{x{8.4cm}}{Stability and reliability} \tn % Row Count 5 (+ 1) % Row 5 \SetRowColor{white} \mymulticolumn{1}{x{8.4cm}}{Easy bug-detection} \tn % Row Count 6 (+ 1) % Row 6 \SetRowColor{LightBackground} \mymulticolumn{1}{x{8.4cm}}{Performance level regarding your system as a whole} \tn % Row Count 7 (+ 1) \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{8.4cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{8.4cm}}{\bf\textcolor{white}{MVC Architecture}} \tn \SetRowColor{LightBackground} \mymulticolumn{1}{p{8.4cm}}{\vspace{1px}\centerline{\includegraphics[width=5.1cm]{/web/www.cheatography.com/public/uploads/desertgarnet_1646880548_model-view-controller-light-blue.png}}} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{8.4cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{8.4cm}}{\bf\textcolor{white}{Optimize SQL Stored Procedure}} \tn % Row 0 \SetRowColor{LightBackground} \mymulticolumn{1}{x{8.4cm}}{{\bf{Use SET NOCOUNT ON}} - Suppresses network messages and decreases traffic} \tn % Row Count 2 (+ 2) % Row 1 \SetRowColor{white} \mymulticolumn{1}{x{8.4cm}}{{\bf{Use fully qualified procedure name}} - A fully qualified object name is \seqsplit{database.schema.objectname}} \tn % Row Count 4 (+ 2) % Row 2 \SetRowColor{LightBackground} \mymulticolumn{1}{x{8.4cm}}{{\bf{Using IF EXISTS AND SELECT 1}} - If checking the existing record, don't need to return column names} \tn % Row Count 7 (+ 3) % Row 3 \SetRowColor{white} \mymulticolumn{1}{x{8.4cm}}{{\bf{Keep transaction short and crisp}} - The longer the transaction the longer the locks will be held based on isolation level. This may result in deadlocks and blocking.} \tn % Row Count 11 (+ 4) \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{8.4cm}{x{1.44 cm} x{6.56 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{8.4cm}}{\bf\textcolor{white}{Azure Pipelines}} \tn % Row 0 \SetRowColor{LightBackground} Tasks & Get resources, Restore, Build, Test, Publish Artifacts \tn % Row Count 2 (+ 2) % Row 1 \SetRowColor{white} \seqsplit{Triggers} & Enable CI, Add branches \tn % Row Count 4 (+ 2) % Row 2 \SetRowColor{LightBackground} \seqsplit{Variables} & Add environment variables or groups \tn % Row Count 6 (+ 2) \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{8.4cm}{x{2.508 cm} x{2.812 cm} x{2.28 cm} } \SetRowColor{DarkBackground} \mymulticolumn{3}{x{8.4cm}}{\bf\textcolor{white}{Service Types}} \tn % Row 0 \SetRowColor{LightBackground} IAAS & PAAS & SAAS \tn % Row Count 1 (+ 1) % Row 1 \SetRowColor{white} \seqsplit{Infrastructure} as a Service & Platform as a Service & Software as a Service \tn % Row Count 4 (+ 3) % Row 2 \SetRowColor{LightBackground} Raw hardware that can be configured. & Platform to publish without giving access to software or OS & Software to use without purchase. \tn % Row Count 9 (+ 5) % Row 3 \SetRowColor{white} Example: Azure VM & Example: Web Apps & Example: Dropbox \tn % Row Count 11 (+ 2) \hhline{>{\arrayrulecolor{DarkBackground}}---} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{8.4cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{8.4cm}}{\bf\textcolor{white}{Pizza as a Service}} \tn \SetRowColor{LightBackground} \mymulticolumn{1}{p{8.4cm}}{\vspace{1px}\centerline{\includegraphics[width=5.1cm]{/web/www.cheatography.com/public/uploads/desertgarnet_1646871001_saas-vs-paas-vs-iaas-Pizza-example.jpg}}} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{8.4cm}{x{2.16 cm} x{5.84 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{8.4cm}}{\bf\textcolor{white}{Azure Storage Services}} \tn % Row 0 \SetRowColor{LightBackground} Blob Storage & Storage service for very large objects, such as video files or bitmaps \tn % Row Count 3 (+ 3) % Row 1 \SetRowColor{white} Disk Storage & Provides disks for virtual machines, applications, and other services. \tn % Row Count 6 (+ 3) % Row 2 \SetRowColor{LightBackground} File Storage & Azure Files offers fully-managed file shares in the cloud. \tn % Row Count 8 (+ 2) % Row 3 \SetRowColor{white} Archive Stroage & Storage facility for data that is rarely accessed. \tn % Row Count 10 (+ 2) \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{8.4cm}{x{2.72 cm} x{5.28 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{8.4cm}}{\bf\textcolor{white}{Azure Compute Services}} \tn % Row 0 \SetRowColor{LightBackground} Virtual Machines & Emulate physical computers. Include virtual processor, memory, storage and networking resources. VMs host and OS and can be logged into through remote client \tn % Row Count 7 (+ 7) % Row 1 \SetRowColor{white} VM Scale Sets & Can use to deploy and manage a set of identical VMs. With all VMs configured the same, virtual machine scale sets are designed to support true autoscale. As demand goes up, more VM instances can be added. As demand goes down, VM instances can be removed. The process can be manual, automated, or a combination of both. \tn % Row Count 20 (+ 13) % Row 2 \SetRowColor{LightBackground} \seqsplit{Containers/Kubernetes} & Can use to deploy and manage containers. Containers are lightweight, virtualized application environments. They're designed to be quickly created, scaled out, and stopped dynamically. You can run multiple instances of a containerized application on a single host machine. \tn % Row Count 31 (+ 11) \end{tabularx} \par\addvspace{1.3em} \vfill \columnbreak \begin{tabularx}{8.4cm}{x{2.72 cm} x{5.28 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{8.4cm}}{\bf\textcolor{white}{Azure Compute Services (cont)}} \tn % Row 3 \SetRowColor{LightBackground} App Service & Quickly build, deploy, and scale enterprise-grade web, mobile, and API apps running on any platform. You can meet rigorous performance, scalability, security, and compliance requirements while using a fully managed platform to perform infrastructure maintenance. App Service is a platform as a service (PaaS) offering. \tn % Row Count 13 (+ 13) % Row 4 \SetRowColor{white} Functions & Functions are ideal when you're concerned only about the code running your service and not the underlying platform or infrastructure. They're commonly used when you need to perform work in response to an event (often via a REST request), timer, or message from another Azure service, and when that work can be completed quickly, within seconds or less. \tn % Row Count 27 (+ 14) \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{8.4cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{8.4cm}}{\bf\textcolor{white}{User Session Management}} \tn % Row 0 \SetRowColor{LightBackground} \mymulticolumn{1}{x{8.4cm}}{{\bf{Set secure/HttpOnly flags on your cookies.}} Avoid sending delicate traffic and tokens across an unencrypted channel.} \tn % Row Count 3 (+ 3) % Row 1 \SetRowColor{white} \mymulticolumn{1}{x{8.4cm}}{{\bf{Generate new session cookies.}} All new session tokens should be generated at every session as soon as a consumer visits the application, verifies the correct credentials, and logs out of their account. A cookie should expire if the account is inactive for an extended period of time, and you should bind the consumer to re-authenticate.} \tn % Row Count 10 (+ 7) % Row 2 \SetRowColor{LightBackground} \mymulticolumn{1}{x{8.4cm}}{{\bf{Configure session cookies properly.}} Session tokens should be extended, random, and uncommon. These properties can ensure that an attacker cannot guess or brute force the session token's value.} \tn % Row Count 14 (+ 4) \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{8.4cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{8.4cm}}{\bf\textcolor{white}{Caching}} \tn % Row 0 \SetRowColor{LightBackground} \mymulticolumn{1}{x{8.4cm}}{Caching is a common technique that aims to improve the performance and scalability of a system. It does this by temporarily copying frequently accessed data to fast storage that's located close to the application.} \tn % Row Count 5 (+ 5) % Row 1 \SetRowColor{white} \mymulticolumn{1}{x{8.4cm}}{Distributed applications typically implement either or both of the following strategies when caching data:} \tn % Row Count 8 (+ 3) % Row 2 \SetRowColor{LightBackground} \mymulticolumn{1}{x{8.4cm}}{Using a {\bf{private cache}}, where data is held locally on the computer that's running an instance of an application or service.} \tn % Row Count 11 (+ 3) % Row 3 \SetRowColor{white} \mymulticolumn{1}{x{8.4cm}}{Using a {\bf{shared cache}}, serving as a common source that can be accessed by multiple processes and machines.} \tn % Row Count 14 (+ 3) % Row 4 \SetRowColor{LightBackground} \mymulticolumn{1}{x{8.4cm}}{The key to using a cache effectively lies in determining the most appropriate data to cache, and caching it at the appropriate time.} \tn % Row Count 17 (+ 3) % Row 5 \SetRowColor{white} \mymulticolumn{1}{x{8.4cm}}{Caching typically works well with data that is immutable or that changes infrequently. Examples include reference information such as product and pricing information in an e-commerce application, or shared static resources that are costly to construct.} \tn % Row Count 23 (+ 6) % Row 6 \SetRowColor{LightBackground} \mymulticolumn{1}{x{8.4cm}}{Caching is typically less useful for dynamic data.} \tn % Row Count 24 (+ 1) \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} % That's all folks \end{multicols*} \end{document}