You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+45-21Lines changed: 45 additions & 21 deletions
Original file line number
Diff line number
Diff line change
@@ -45,15 +45,15 @@ Sooner or later I will complete it with the relative answers. Feel free to contr
45
45
46
46
####[[↑]](#toc) <aname='patterns'>Questions about Design Patterns:</a>
47
47
48
-
* Why are global objects evil? Can you show it with a code example?
48
+
* Why are global objects and static evil? Can you show it with a code example?
49
49
* Tell me about Inversion of Control and how does it improve the design of code.
50
-
*About the Law of Demeter (the Principle of Least Knowledge): write code violating it, then fix it.
51
-
*Which are the limits and pitfalls of Active-Record?
50
+
*The Law of Demeter (the Principle of Least Knowledge) states that each unit should have only limited knowledge about other units and it should only talk to its immediate friends (sometimes stated as "Don't talk to strangers"). Would you write code violating this principle, show why it is a bad design and then fix it?
51
+
*Active-Record is the design pattern that promotes objects to include functions such as Insert, Update, and Delete, and properties that correspond to the columns in some underlying database table. In your opinion and experience, which are the limits and pitfalls of the this pattern?
52
52
* What are the differences between Active-Record and Data-Mapper?
53
-
*What is the intent of the Null Object Pattern?
53
+
*Why it is 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?
54
54
* Why is Composition often better than Inheritance?
55
55
* What is an Anti-corruption Layer?
56
-
*Could you write a Thread-Safe Singleton class?
56
+
*Singleton is a design pattern that restricts the instantiation of a class to one single object. Writing a Thread-Safe Singleton class is not so obvious. Would you try?
57
57
* The ability to change implementation without affecting clients is called Data Abstraction. Produce and example violating this property, then fix it.
58
58
* Write a snippet of code violating the Don't Repeat Yourself (DRY) principle. Then, fix it.
59
59
* How would you deal with Dependency Hell?
@@ -64,15 +64,20 @@ Sooner or later I will complete it with the relative answers. Feel free to contr
64
64
65
65
####[[↑]](#toc) <aname='design'>Questions about Code Design:</a>
66
66
67
-
* How do tests influence code design?
67
+
* It is often heard that one of the most important goals in Object-Oriented Design (and code design in general) is to have High Cohesion and Loose Coupling. What does it mean? Why is it that important and how is it achieved?
68
+
* Why does array index start with '0' in most of languages?
69
+
* How do tests and TDD influence code design?
70
+
* Write a snippet of code violating the Don't Repeat Yourself (DRY) principle. Then, explain why is it a bad design, and fix it.
68
71
* What's the difference between cohesion and coupling?
69
72
* What is refactoring useful for?
70
-
* Are comments in code useful?
73
+
* Are comments in code useful? Some say they should be avoided as much as possible, and hopefully made unnecessary. Do you agree?
71
74
* What is the difference between design and architecture?
72
-
* Why in TDD are tests are written before code?
75
+
* Why in TDD are tests written before code?
73
76
* C++ supports multiple inheritance, and Java allows a class to implement multiple interfaces. What impact does using these facilities have on orthogonality? Is there a difference in impact between using multiple inheritance and multiple interfaces? Is there a difference between using delegation and using inheritance? [This question is from The Pragmatic Programmer, by Andrew Hunt and David Thomas]
74
77
* Pros and cons of holding domain logic in Stored Procedures.
78
+
* In your opinion, why have Object-Oriented Design dominated the market for so many years?
75
79
* Why does array index start with '0' in most of languages?
80
+
* What would you do to understand if your code has a bad design?
76
81
77
82
78
83
####[[↑]](#toc) <aname='languages'>Questions about Languages:</a>
@@ -85,23 +90,30 @@ Sooner or later I will complete it with the relative answers. Feel free to contr
85
90
* Write a loop, then transform it into a recursive function, using only immutable structures (i.e. avoid using variables). Discuss.
86
91
* What does it mean when a language treats functions as first-class citizens?
87
92
* Show me an example where an Anonymous Function can be useful
88
-
*What is Dynamic Method Dispatch?
93
+
*There are a lot of different type systems: let's talk about static and dynamic type systems, and about strong and weak ones. You surely have an opinion and a preference about this topic. Would you like to share them, and discuss why and when would you promote one particular type system for developing an enterprise software?
89
94
* What are namespaces useful for? Invent an alternative.
90
-
* Talk about Interoperability between Java and C# (choose 2 other arbitrary languages)
95
+
* Talk about Interoperability between Java and C# (in alternative, choose 2 other arbitrary languages)
91
96
* Why do many software engineers not like Java?
92
97
* What makes a good language good and a bad language bad?
93
98
* Write two functions, one Referentially Transparent and the other one Referentially Opaque. Discuss.
94
-
* Whats the Stack and what's the Heap?
99
+
* Whats the Stack and what's the Heap? What's a Stack Overflow?
95
100
* Why is it important that in a language functions are first class citizens?
96
-
* How is Pattern Matching different than Switch clauses?
101
+
*Some languages, expecially the ones that promote a Functional approach, allow a technique called Pattern Matching. Do you know it? How is Pattern Matching different from Switch clauses?
97
102
* Why do some languages have no exceptions by design? What are the pros and cons?
98
103
* If `Cat` is an `Animal`, is `TakeCare<Cat>` a `TakeCare<Animal>`?
99
-
* Why in Java, C# and many other languages are constructors are not part of the interface?
104
+
* Why in Java, C# and many other languages constructors are not part of the interface?
105
+
* In the last years there has been a lot of hype on Node. What's your opinion on the use in the back end of a language that was initially conceived to run in the browser?
106
+
* 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?
107
+
100
108
101
109
102
110
####[[↑]](#toc) <aname='web'>Questions about Web development:</a>
103
111
* Why first-party cookies and third-party cookies are treated so differently?
104
112
* How would you manage Web Services API versioning?
113
+
* From a Back End perspective, are there any disadvantages or drawbacks on the adopion of Single Page Applications?
114
+
* Why do we usually put so much effort for having stateless services? What's so good in stateless code and why and when statefullness is bad?
115
+
* REST and SOAP: when would you choose one, and when the other?
116
+
* In Web development, Model-View Controller and Model-View-View-Model approaches are very common, both in the Back End and in the Fron End. What are they, and why are they advisable?
105
117
106
118
107
119
####[[↑]](#toc) <aname='databases'>Questions about Databases:</a>
@@ -114,19 +126,21 @@ Sooner or later I will complete it with the relative answers. Feel free to contr
114
126
* What's the N+1 problem?
115
127
* How would you find the most expensive queries in an application?
116
128
* In your opinion, is it always needed to use database normalization? When is it advisable to use denormalized databases?
129
+
* Of of the Continuous Integration's techniques is called Blue-Green Deployment: it consists in having two production environments, as identical as possible, and in performing the deployment in one of them while the other one is still operating, and than in safely switching the traffic to the second one after some convenient testing. This technique becomes more complicated when the deployment includes changes to the database structure or content. I'd like to discuss this topic with you.
117
130
118
131
119
132
####[[↑]](#toc) <aname='nosql'>Questions about NoSQL:</a>
120
133
121
134
* What is Eventual Consistency?
122
135
* About the CAP Theorem, make examples of CP, AP and CA systems.
136
+
* How would you explain the recent rise in interest for NoSQL?
123
137
* How does NoSQL tackle scalability challenges?
124
138
* In which case would you use a document database like MongoDB instead of a relational database like MySQL or PostgreSQL?
125
139
126
140
127
141
####[[↑]](#toc) <aname='codeversioning'>Questions about code versioning:</a>
128
142
129
-
* Why is branching with Mercurial or git is easier than with SVN?
143
+
* Why is branching with Mercurial or git easier than with SVN?
130
144
* What are the pros and cons of Distributed Version Control Systems like Git over Centralized ones like SVN?
131
145
* Could you describe GitHub Flow and GitFlow workflows?
132
146
* What's a rebase?
@@ -139,7 +153,7 @@ Sooner or later I will complete it with the relative answers. Feel free to contr
139
153
* Why is testing multithreading / concurrent code so difficult?
140
154
* What is a Race Condition? Code an example, using whatever language you like.
141
155
* What is a Deadlock? Would you be able to write some code that is affected by deadlocks?
142
-
* What is Process Starvation?
156
+
* What is Process Starvation? If you need, let's review its definition.
143
157
* What is a Wait Free algorithm?
144
158
145
159
@@ -154,26 +168,26 @@ Sooner or later I will complete it with the relative answers. Feel free to contr
154
168
* Let's talk about the several approaches to Reconciliation after network partitions
155
169
* What are the Fallacies of Distributed Computing?
156
170
* When would you use Request/Reply and when Publish/Subscribe?
157
-
* Why do we usually put so much effort for having stateless services? What's so good in stateless code and why and when statefullness is bad?
158
-
* REST and SOAP: when would you choose one, and when the other?
159
171
* Suppose the system you are working on does not support transactionality. How would you implement it from scratch?
160
172
161
173
162
174
####[[↑]](#toc) <aname='management'>Questions about Software Lifecycle and Team Management:</a>
163
175
164
176
* What is agility?
165
177
* How would you deal with Legacy Code?
166
-
* I'm the CEO of your Company. Explain to me Kanban and convince me to invest in it.
178
+
* Say I'm your Project Manager, and I'm no expert in programming. Would you try explaining me what Legacy Code is and why should I care about code quality?
179
+
* I'm the CEO of your company. Explain to me Kanban and convince me to invest in it.
167
180
* What is the biggest difference between Agile and Waterfall?
168
181
* Being a team manager, how would you deal with the problem of having too many meetings?
169
182
* How would you manage a very late project?
170
183
* "*Individuals and interactions over processes and tools*" and "*Customer collaboration over contract negotiation*" comprise half of the values of the Agile Manifesto. Discuss
171
184
* Tell me what decisions would you take if you could be the CTO of your Company.
172
185
* Are Program Managers useful?
173
186
* Organize a development team using flexible schedules (that is, no imposed working hours) and "Take as you need" vacation policy
174
-
* How would you manage a very high turn over and convince developers not to leave the team, without increasing compensation?
187
+
* How would you manage a very high turn over and convince developers not to leave the team, without increasing compensation? What could a Company improve to make them stay?
175
188
* What are the top 3 qualities you look for in colleagues, beyond their code?
176
189
* What are the top 3 things you wish non-technical people knew about code?
190
+
* Imagine your company gives you 1 month and some budget to improve your and your colleagues' daily life. What would you do?
177
191
178
192
179
193
####[[↑]](#toc) <aname='algorithms'>Questions about logic and algorithms:</a>
@@ -230,7 +244,17 @@ Sooner or later I will complete it with the relative answers. Feel free to contr
230
244
231
245
232
246
####[[↑]](#toc) <aname='security'>Questions about Security:</a>
247
+
* How to 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?
248
+
* Why is it said that cryptography is not something you should try to invent or design yourself?
233
249
* What's Two Factor Authentication? How would you implement it in an existing web application?
250
+
* If not carefully handled, logs always risk to contain sensible information, such as passwords. How would you deal with this?
251
+
* Write down a snippet of code affected by SQL Injection and fix it.
252
+
* How would it be possible to detect SQL Injection via static code analisys? I don't expect you to write an algorithm capable of doing this, as it is probably a huge topic, but let's discuss a general approach.
253
+
* What do you know about Cross-Site Scripting? If you don't remember it, let's review online its definition and let's discuss about it.
254
+
* What do you know about Cross-Site Forgery Attack? If you don't remember it, let's review online its definition and let's discuss about it.
255
+
* How does HTTPS work?
256
+
* What's a Man-in-the-middle Attack? And why does HTTPS can help protecting against it?
257
+
* How can you prevent the user session to be stolen? Chances are you remember what Session or Cookie Hijacking is, otherwise let's read its Wikipedia page together.
@@ -262,6 +286,7 @@ Sooner or later I will complete it with the relative answers. Feel free to contr
262
286
* There is an aesthetic element to all design. The question is, is this aesthetic element your friend or your enemy?
263
287
* List the last 5 books you read.
264
288
* How would you introduce Continuous Delivery in a successful, huge company for which the change from Waterfall to Continuous Delivery would be not trivial, because of the size and complexity of the business?
289
+
* When does it make sense to reinvent the wheel?
265
290
* Let's have a conversation about "*Reinventing the wheel*", the "*Not Invented Here Syndrome*" and the "*Eating Your Own Food*" practice
266
291
* What's the next thing you would automate in your current workflow?
267
292
* Why is writing software difficult? What makes maintaining software hard?
@@ -274,8 +299,7 @@ Sooner or later I will complete it with the relative answers. Feel free to contr
274
299
* Is developing software an art, a craftsmanship or an engineering endeavour? Your opinion.
275
300
* "People who like this also like... ". How would you implement this feature in an e-commerce shop?
276
301
* Why are corporations slower than startups in innovating?
277
-
* Why is it said that cryptography is not something you should try to invent or design yourself?
278
-
302
+
* What have you achieved recently that you are proud of?
0 commit comments