Skip to content

Commit 4394842

Browse files
TOC aligned with title, question on null from General to Languages
1 parent a39a28a commit 4394842

File tree

1 file changed

+25
-24
lines changed

1 file changed

+25
-24
lines changed

README.md

Lines changed: 25 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@ Feel free to open a [Discussion](https://github.com/arialdomartini/Back-End-Deve
7979
* [Constructors and Interfaces](#constructors-and-interfaces)
8080
* [Node.js](#node-js)
8181
* [Java and Time Traveling](#java-and-time-traveling)
82+
* [Eliminate Null](#eliminate-null)
8283

8384
* [Web Questions](#web)
8485
* [3rd Party Cookies](#3rd-party-cookies)
@@ -113,7 +114,7 @@ Feel free to open a [Discussion](https://github.com/arialdomartini/Back-End-Deve
113114
* [Rebase](#rebase)
114115
* [Merging in HG and in Git](#merging-in-hg-and-in-git)
115116

116-
* [Concurrency Questions](#concurrency)
117+
* [Questions about Concurrency](#concurrency)
117118
* [Why?](#why)
118119
* [Testing Concurrency](#testing-concurrency)
119120
* [Race Conditions](#race-conditions)
@@ -147,7 +148,7 @@ Feel free to open a [Discussion](https://github.com/arialdomartini/Back-End-Deve
147148
* [Team Organization](#team-organization)
148149
* [Turn Over](#turn-over)
149150
* [Qualities](#qualities)
150-
* [3 Things about Code](#3-things-about-code)
151+
* [3 Things About Code](#3-things-about-code)
151152
* [1 Month's Revolution](#1-months-revolution)
152153

153154
* [Questions about logic and algorithms](#algorithms)
@@ -170,7 +171,7 @@ Feel free to open a [Discussion](https://github.com/arialdomartini/Back-End-Deve
170171
* [Event-Driven Architecture](#event-driven-architecture)
171172
* [Readibility](#readibility)
172173
* [Emergent and Evolutionary](#emergent-and-evolutionary)
173-
* [ Scale-Out, Scale-Up](#scale-out-scale-up)
174+
* [Scale-Out, Scale-Up](#scale-out-scale-up)
174175
* [Failures User Sessions](#failures-user-sessions)
175176
* [CQRS](#cqrs)
176177
* [n-tier](#n-tier)
@@ -199,9 +200,9 @@ Feel free to open a [Discussion](https://github.com/arialdomartini/Back-End-Deve
199200

200201
* [Questions about Security](#security)
201202
* [Security by Default](#security-by-default)
202-
* [Don't invent Cryptography](#dont-invent-cryptography)
203+
* [Don't Invent Cryptography](#dont-invent-cryptography)
203204
* [2-FA](#2-fa)
204-
* [Sensible Data in Logs](#sensible-data-in-logs)
205+
* [Confidential Data in Logs](#confidential-data-in-logs)
205206
* [SQL Injection](#sql-injection)
206207
* [Detect SQL Injection](#detect-sql-injection)
207208
* [XSS](#xss)
@@ -224,14 +225,13 @@ Feel free to open a [Discussion](https://github.com/arialdomartini/Back-End-Deve
224225
* [TCP and HTTP](#tcp-and-http)
225226
* [Client-Side vs Server-Side](#client-side-vs-server-side)
226227
* [Reliable and non-reliable channels](#reliable-and-non-reliable-channels)
227-
* [Million-Dollar Mistake](#million-dollar-mistake)
228228

229229
* [Open Questions](#open)
230230
* [Resistance to Change](#resistance-to-change)
231231
* [Threading ELI5](#threading-eli5)
232232
* [Innovation and Predictability](#innovation-and-predictability)
233233
* [Good Code](#good-code)
234-
* [Stradming](#stradming)
234+
* [Streaming](#streaming)
235235
* [1 Week Improvement](#1-week-improvement)
236236
* [Learnt this week](#learnt-this-week)
237237
* [Aestheric](#aestheric)
@@ -240,7 +240,7 @@ Feel free to open a [Discussion](https://github.com/arialdomartini/Back-End-Deve
240240
* [Reinvent the Wheel](#reinvent-the-wheel)
241241
* [Not Invented Here](#not-invented-here)
242242
* [Next Thing to Automate](#next-thing-to-automate)
243-
* [Code is Hard](#code-is-hard)
243+
* [Coding is Hard](#coding-is-hard)
244244
* [Green Fields and Brown Fields](#green-fields-and-brown-fields)
245245
* [Type "Google.com"](#type-googlecom)
246246
* [While idle](#while-idle)
@@ -253,7 +253,7 @@ Feel free to open a [Discussion](https://github.com/arialdomartini/Back-End-Deve
253253
* [I'm proud of](#im-proud-of)
254254

255255
* [Questions based on snippets of code](#snippets)
256-
* [Beware the closure](#beware-the-closure)
256+
* [Beware the Closure](#beware-the-closure)
257257
* [Type Erasure](#type-erasure)
258258
* [Memory Leak](#memory-leak)
259259
* [Kill the switch](#kill-the-switch)
@@ -276,7 +276,6 @@ Feel free to open a [Discussion](https://github.com/arialdomartini/Back-End-Deve
276276

277277

278278
### [[]](#toc) <a name='patterns'>Questions about Design Patterns:</a>
279-
280279
#### Globals Are Evil
281280
Why are global and static objects evil? Can you show it with a code example?
282281

@@ -298,12 +297,14 @@ Active-Record is the design pattern that promotes objects to include functions s
298297
Data-Mapper is a design pattern that promotes the use of a layer of Mappers that moves data between objects and a database while keeping them independent of each other and the mapper itself. On the contrary, in Active-Record objects directly incorporate operations for persisting themselves to a database, and properties corresponding to the underlying database tables. Do you have an opinion on those patterns? When would you use one instead of the other?
299298

300299
#### Billion Dollar Mistake
301-
Why is it often said that the introduction of `null` is a "billion dollar mistake"? Would you discuss the techniques to avoid it, such as the Null Object Pattern introduced by the GOF book, or Option types?
300+
[Tony Hoare](https://en.m.wikipedia.org/wiki/Tony_Hoare) who invented the null reference once said "*I call it my billion-dollar mistake*" since it led to "*innumerable errors, vulnerabilities, and system crashes, which have probably caused a billion dollars of pain and damage in the last forty years*".
301+
302+
Would you discuss the techniques to avoid it, such as the Null Object Pattern introduced by the GOF book, or Option types?
302303

303304
#### Inheritance vs Composition
304305
Many state that, in Object-Oriented Programming, composition is often a better option than inheritance. What's you opinion?
305306

306-
#### Anti-corruption Layer
307+
#### Anti-Corruption Layer
307308
What is an Anti-corruption Layer?
308309

309310
#### Singleton
@@ -339,7 +340,7 @@ Why do array indexes start with '0' in most languages?
339340
#### TDD
340341
How do tests and TDD influence code design?
341342

342-
#### DRY violation
343+
#### DRY Violation
343344
Write a snippet of code violating the Don't Repeat Yourself (DRY) principle. Then, explain why it is a bad design, and fix it.
344345

345346
#### Cohesion vs Coupling
@@ -348,7 +349,7 @@ What's the difference between cohesion and coupling?
348349
#### Refactoring
349350
What is refactoring useful for?
350351

351-
#### Code comments
352+
#### Code Comments
352353
Are comments in code useful? Some say they should be avoided as much as possible, and hopefully made unnecessary. Do you agree?
353354

354355
#### Design vs Architecture
@@ -363,7 +364,7 @@ C++ supports multiple inheritance, and Java allows a class to implement multiple
363364
#### Domain Logic in Stored Procedures
364365
What are the pros and cons of holding domain logic in Stored Procedures?
365366

366-
#### OOP took over the world
367+
#### OOP Took Over the World
367368
In your opinion, why has Object-Oriented Design dominated the market for so many years?
368369

369370
#### Bad Design
@@ -435,6 +436,8 @@ In the last years there has been a lot of hype around Node.js. What's your opini
435436

436437
#### Java and time-traveling
437438
* Pretend you have a time machine and pretend that you have the opportunity to go to a particular point in time during Java's (or C#, Python, Go or whatever) history, and talk with some of the JDK architects. What would you try to convince them of? Removing checked exceptions? Adding unsigned primitives? Adding multiple-inheritance?
439+
#### Eliminate Null
440+
Imagine you want to remove the possibility to have null references in your preferred language: how would you achieve this goal? What consequences would this have?
438441

439442

440443
### [[]](#toc) <a name='web'>Questions about Web development:</a>
@@ -680,7 +683,7 @@ What makes code readable?
680683
#### Emergent and Evolutionary
681684
What is the difference between emergent design and evolutionary architecture?
682685

683-
##### Scale-Out, Scale-Up
686+
#### Scale-Out, Scale-Up
684687
Scale out vs scale up: how are they different? When to apply one, when the other?
685688

686689
#### Failures User Sessions
@@ -761,13 +764,13 @@ What are the pros and cons of microservice architecture?
761764
#### Security by Default
762765
How do you write secure code? In your opinion, is it one of the developer's duties, or does it require a specialized role in the company? And why?
763766

764-
#### Don't invent Cryptography
767+
#### Don't Invent Cryptography
765768
Why is it said that cryptography is not something you should try to invent or design yourself?
766769

767770
#### 2-FA
768771
What is two factor authentication? How would you implement it in an existing web application?
769772

770-
#### Sensible Data in Logs
773+
#### Confidential Data in Logs
771774
If not carefully handled, there is always a risk of logs containing sensitive information, such as passwords. How would you deal with this?
772775

773776
#### SQL Injection
@@ -834,8 +837,6 @@ What are the tradeoffs of client-side rendering vs. server-side rendering?
834837
How could you develop a reliable communication protocol based on a non-reliable one?
835838

836839

837-
#### Million-Dollar Mistake
838-
[Tony Hoare](https://en.m.wikipedia.org/wiki/Tony_Hoare) who invented the null reference once said "*I call it my billion-dollar mistake*" since it led to "*innumerable errors, vulnerabilities, and system crashes, which have probably caused a billion dollars of pain and damage in the last forty years*". Imagine you want to remove the possibility to have null references in your preferred language: how would you achieve this goal? What consequences could this have?
839840

840841

841842
### [[]](#toc) <a name='open'>Open Questions:</a>
@@ -852,7 +853,7 @@ As a software engineer you want both to innovate and to be predictable. How thos
852853
#### Good Code
853854
What makes good code good?
854855

855-
#### Stradming
856+
#### Streaming
856857
Explain streaming and how you would implement it.
857858

858859
#### 1 Week Improvement
@@ -878,7 +879,7 @@ Let's have a conversation about "*reinventing the wheel*", the "*not invented he
878879

879880
#### Next Thing to Automate
880881
What's the next thing you would automate in your current workflow?
881-
#### Code is Hard
882+
#### Coding is Hard
882883
Why is writing software difficult? What makes maintaining software hard?
883884

884885
#### Green Fields and Brown Fields
@@ -915,7 +916,7 @@ What have you achieved recently that you are proud of?
915916

916917
### [[]](#toc) <a name='snippets'>Questions about snippets of code:</a>
917918

918-
#### Beware the closure
919+
#### Beware the Closure
919920
What's the output of this Javascript function?
920921
```javascript
921922
function hookupevents() {
@@ -971,7 +972,7 @@ public class Stack {
971972
}
972973
```
973974

974-
#### Kill the switch
975+
#### Kill the wwitch
975976
`if`s and in general conditional statements lead to procedural and imperative programming. Can you get rid of this `switch` and make this snippet more object oriented?
976977

977978
```java

0 commit comments

Comments
 (0)