How to pass a coding interview as an automation developer
Oct 17 2016
T.J. Maher has been a software tester for twenty years, but only recently became an automation developer. March 2015 he went from one job executing other people's automated testplans to writing his own.
When he found himself needing to start job searching over a year later due to a switch in management, he found major changes to the interview process. This presentation describes T.J. Maher's job hunt, those changes, and how he managed to find a new position ... Not just as an automation developer, but as a Software Engineer in Test.
How to pass a coding interview as an automation developer talk - Oct 17 2016
1. Monday, October 17, 2016 @ 6:00 pm ( link )
Pixability - 77 North Washington Street, Boston, MA
by T. J. Maher
@tjmaher1
2. 10/17/2016 2
About This Talk
How to pass a coding interview as an automation developer
Slides have been posted on SlideShare.Net.
http://slideshare.net/tjmaher1
Note: This presentation has been adapted for SlideShare.
Slideshare does not handle animations.
What used to be originally animations has been split out across
various slides.
3. What about the audience?
10/17/2016 3How to pass a coding interview as an automation developer
Where are the:
People who aren’t in the Quality Assurance field who may not
know what we QA people do?
Manual testers trying to break into the automation field?
Automation developers?
Software developers?
4. 10/17/2016 How to pass a coding interview 4
About the Speaker:
Thomas F. Maher, Jr. ( “T.J.” )
@tjmaher1
http://tjmaher.com
About the Speaker:
Thomas F. Maher, Jr. ( “T.J.” )
@tjmaher1
1996: Start of Software Testing Career
2014: Working with Selenium WebDriver / Java
2015: Blogger, Adventures in Automation
2016: Contributing Writer to TechBeacon
How to pass a coding interview as an automation developer,
by T.J. Maher, Sept 21, 2016
BSCS from Bridgewater State
MSE from Brandeis University
5. Quality Assurance Engineer => End User Advocate
10/17/2016 5
Quality Assurance: The Fun Parts!
How to pass a coding interview as an automation developer
6. Quality Assurance Engineer => End User Advocate
Build Model of Customer
10/17/2016 6
Quality Assurance: The Fun Parts!
How to pass a coding interview as an automation developer
7. Quality Assurance Engineer => End User Advocate
Build Model of Customer
Taking Model through Software Development Process
10/17/2016 7
Quality Assurance: The Fun Parts!
How to pass a coding interview as an automation developer
8. Quality Assurance Engineer => End User Advocate
Build Model of Customer
Taking Model through Software Development Process
10/17/2016 8
Quality Assurance: The Fun Parts!
How to pass a coding interview as an automation developer
The Fun Parts: With brand-new functionality, testing the…
9. Quality Assurance Engineer => End User Advocate
Build Model of Customer
Taking Model through Software Development Process
10/17/2016 9
Quality Assurance: The Fun Parts!
How to pass a coding interview as an automation developer
The Fun Parts: With brand-new functionality, testing the…
Software requirements
10. Quality Assurance Engineer => End User Advocate
Build Model of Customer
Taking Model through Software Development Process
10/17/2016 10
Quality Assurance: The Fun Parts!
How to pass a coding interview as an automation developer
The Fun Parts: With brand-new functionality, testing the…
Software requirements
Acceptance criteria
11. Quality Assurance Engineer => End User Advocate
Build Model of Customer
Taking Model through Software Development Process
10/17/2016 11
Quality Assurance: The Fun Parts!
How to pass a coding interview as an automation developer
The Fun Parts: With brand-new functionality, testing the…
Software requirements
Acceptance criteria
The software development process
12. Quality Assurance Engineer => End User Advocate
Build Model of Customer
Taking Model through Software Development Process
10/17/2016 12
Quality Assurance: The Fun Parts!
How to pass a coding interview as an automation developer
The Fun Parts: With brand-new functionality, testing the…
Software requirements
Acceptance criteria
The software development process
The software itself
13. Quality Assurance Engineer => End User Advocate
Build Model of Customer
Taking Model through Software Development Process
10/17/2016 13
Quality Assurance: The Fun Parts!
How to pass a coding interview as an automation developer
The Fun Parts: With brand-new functionality, testing the…
Software requirements
Acceptance criteria
The software development process
The software itself
My own assumptions about the product
14. Quality Assurance Engineer => End User Advocate
Build Model of Customer
Taking Model through Software Development Process
10/17/2016 14
Quality Assurance: The Fun Parts!
How to pass a coding interview as an automation developer
The Fun Parts: With brand-new functionality, testing the…
Software requirements
Acceptance criteria
The software development process
The software itself
My own assumptions about the product
Finding bugs is fun, too … don’t tell the developers…
15. 10/17/2016 15
QA: The Not So Fun Parts!
How to pass a coding interview as an automation developer
16. 10/17/2016 16
QA: The Not So Fun Parts!
How to pass a coding interview as an automation developer
Regression Testing:
17. 10/17/2016 17
QA: The Not So Fun Parts!
How to pass a coding interview as an automation developer
Regression Testing:
Checking the old functionality still works in:
IE9, IE10, IE11
18. 10/17/2016 18
QA: The Not So Fun Parts!
How to pass a coding interview as an automation developer
Regression Testing:
Checking the old functionality still works in:
IE9, IE10, IE11
MS Edge
19. 10/17/2016 19
QA: The Not So Fun Parts!
How to pass a coding interview as an automation developer
Regression Testing:
Checking the old functionality still works in:
IE9, IE10, IE11
MS Edge
Chrome, Firefox
20. 10/17/2016 20
QA: The Not So Fun Parts!
How to pass a coding interview as an automation developer
Regression Testing:
Checking the old functionality still works in:
IE9, IE10, IE11
MS Edge
Chrome, Firefox
Safari on the Mac
21. 10/17/2016 21
QA: The Not So Fun Parts!
How to pass a coding interview as an automation developer
Regression Testing:
Checking the old functionality still works in:
IE9, IE10, IE11
MS Edge
Chrome, Firefox
Safari on the Mac
Automation Development Makes Things Fun Again:
22. 10/17/2016 22
QA: The Not So Fun Parts!
How to pass a coding interview as an automation developer
Regression Testing:
Checking the old functionality still works in:
IE9, IE10, IE11
MS Edge
Chrome, Firefox
Safari on the Mac
Automation Development Makes Things Fun Again:
Write software to automatically check the old stuff is still
working
23. 10/17/2016 23
QA: The Not So Fun Parts!
How to pass a coding interview as an automation developer
Regression Testing:
Checking the old functionality still works in:
IE9, IE10, IE11
MS Edge
Chrome, Firefox
Safari on the Mac
Automation Development Makes Things Fun Again:
Write software to automatically check the old stuff is still
working
Selenium WebDriver to emulate the user workflows
24. 10/17/2016 24
QA: The Not So Fun Parts!
How to pass a coding interview as an automation developer
Regression Testing:
Checking the old functionality still works in:
IE9, IE10, IE11
MS Edge
Chrome, Firefox
Safari on the Mac
Automation Development Makes Things Fun Again:
Write software to automatically check the old stuff is still
working
Selenium WebDriver to emulate the user workflows
Testing the Webservices or REST APIs
25. 10/17/2016 25
Before My First Technical Interviews:
Incorrect Assumptions
How to pass a coding interview as an automation developer
26. The Technical Interview Would Be Based
Around Automation Development
Experience
10/17/2016 26
Before My First Technical Interviews:
Incorrect Assumptions
How to pass a coding interview as an automation developer
Assumption #1:
27. The Technical Interview Would Be Based
Around Automation Development
Experience
10/17/2016 27
Before My First Technical Interviews:
Incorrect Assumptions
How to pass a coding interview as an automation developer
Assumption #1:
I’d be writing Selenium WebDriver code
either:
On a laptop
On a whiteboard
Assumption #2:
29. A developer instructed me to go to the whiteboard and answer the
following:
10/17/2016 29
The Technical Interview
How to pass a coding interview as an automation developer
30. A developer instructed me to go to the whiteboard and answer the
following:
10/17/2016 30
The Technical Interview
How to pass a coding interview as an automation developer
“Using your favorite programming
language: Write a method that
checks to see if a given word is a
palindrome.”
31. A developer instructed me to go to the whiteboard and answer the
following:
10/17/2016 31
The Technical Interview
How to pass a coding interview as an automation developer
“Using your favorite programming
language: Write a method that
checks to see if a given word is a
palindrome.
“Example palindromes: ‘noon’ and
‘racecar’.”
33. • Blank Staring at Whiteboard
10/17/2016 33
And then this happened…
How to pass a coding interview as an automation developer
34. • Blank Staring at Whiteboard
• Developers waiting for me to do …
10/17/2016 34
And then this happened…
How to pass a coding interview as an automation developer
35. • Blank Staring at Whiteboard
• Developers waiting for me to do … ANYTHING!!
10/17/2016 35
And then this happened…
How to pass a coding interview as an automation developer
36. • Blank Staring at Whiteboard
• Developers waiting for me to do … ANYTHING!!
• Scribbled something down....
10/17/2016 36
And then this happened…
How to pass a coding interview as an automation developer
37. • Blank Staring at Whiteboard
• Developers waiting for me to do … ANYTHING!!
• Scribbled something down....
• Erased it.
10/17/2016 37
And then this happened…
How to pass a coding interview as an automation developer
38. • Blank Staring at Whiteboard
• Developers waiting for me to do … ANYTHING!!
• Scribbled something down....
• Erased it.
• Scribbled something down...
10/17/2016 38
And then this happened…
How to pass a coding interview as an automation developer
39. • Blank Staring at Whiteboard
• Developers waiting for me to do … ANYTHING!!
• Scribbled something down....
• Erased it.
• Scribbled something down...
• Stared blankly.
10/17/2016 39
And then this happened…
How to pass a coding interview as an automation developer
40. • Blank Staring at Whiteboard
• Developers waiting for me to do … ANYTHING!!
• Scribbled something down....
• Erased it.
• Scribbled something down...
• Stared blankly.
• Finished only half of the problem.
10/17/2016 40
And then this happened…
How to pass a coding interview as an automation developer
41. I joked with the interviewers. If only:
10/17/2016 41
Technical Interview: The Aftermath
How to pass a coding interview as an automation developer
42. I joked with the interviewers. If only:
Questions focused solely on automation
10/17/2016 42
Technical Interview: The Aftermath
How to pass a coding interview as an automation developer
43. I joked with the interviewers. If only:
Questions focused solely on automation
Interview demoed writing an automation script
10/17/2016 43
Technical Interview: The Aftermath
How to pass a coding interview as an automation developer
44. I joked with the interviewers. If only:
Questions focused solely on automation
Interview demoed writing an automation script
Their response:
10/17/2016 44
Technical Interview: The Aftermath
How to pass a coding interview as an automation developer
45. I joked with the interviewers. If only:
Questions focused solely on automation
Interview demoed writing an automation script
Their response:
“All employees are expected to meet a certain
minimum standard of coding knowledge, even
for quality assurance positions”.
10/17/2016 45
Technical Interview: The Aftermath
How to pass a coding interview as an automation developer
46. I joked with the interviewers. If only:
Questions focused solely on automation
Interview demoed writing an automation script
Their response:
“All employees are expected to meet a certain
minimum standard of coding knowledge, even
for quality assurance positions”.
10/17/2016 46
Technical Interview: The Aftermath
How to pass a coding interview as an automation developer
… These types of questions asked in 10 out of 12 of my
interviews!
48. Screening for Basic Fluency in a Programming Language
10/17/2016 48
New Requirements
For Automation Developers
How to pass a coding interview as an automation developer
49. Screening for Basic Fluency in a Programming Language
Automation Developers asked same interview questions as
Software Developers
10/17/2016 49
New Requirements
For Automation Developers
How to pass a coding interview as an automation developer
50. Screening for Basic Fluency in a Programming Language
Automation Developers asked same interview questions as
Software Developers
Automation Developers are Software Developers
10/17/2016 50
New Requirements
For Automation Developers
How to pass a coding interview as an automation developer
51. Screening for Basic Fluency in a Programming Language
Automation Developers asked same interview questions as
Software Developers
Automation Developers are Software Developers
Same code quality in the automation test framework as the
software application itself.
10/17/2016 51
New Requirements
For Automation Developers
How to pass a coding interview as an automation developer
52. Step 1: Take a Refresher Course:
10/17/2016 52
How to Become Fluent in Coding?
How to pass a coding interview as an automation developer
53. Step 1: Take a Refresher Course:
Members of the Boston Public Library get a free subscription
to Lynda.com.
10/17/2016 53
How to Become Fluent in Coding?
How to pass a coding interview as an automation developer
54. Step 1: Take a Refresher Course:
Members of the Boston Public Library get a free subscription
to Lynda.com.
Massively Open Online Courses such as Mooc.org, indexes
absolutely free edX courses from Harvard, MIT and other
colleges dealing with Computer Science, Java
10/17/2016 54
How to Become Fluent in Coding?
How to pass a coding interview as an automation developer
55. Step 1: Take a Refresher Course:
Members of the Boston Public Library get a free subscription
to Lynda.com.
Massively Open Online Courses such as Mooc.org, indexes
absolutely free edX courses from Harvard, MIT and other
colleges dealing with Computer Science, Java
Coursera.org by Duke, Stanford, Johns Hopkins
10/17/2016 55
How to Become Fluent in Coding?
How to pass a coding interview as an automation developer
56. Step 1: Take a Refresher Course:
Members of the Boston Public Library get a free subscription
to Lynda.com.
Massively Open Online Courses such as Mooc.org, indexes
absolutely free edX courses from Harvard, MIT and other
colleges dealing with Computer Science, Java
Coursera.org by Duke, Stanford, Johns Hopkins
Udacity.org, backed by Google, AT&T and Amazon, also has
free courses in Java, JavaScript, etc. Learn by creating
projects.
10/17/2016 56
How to Become Fluent in Coding?
How to pass a coding interview as an automation developer
57. Step 2: Read the Documentation:
Learning Java? Java has official “Learning trails” with chapters such
as Getting Started, Learning the Java Language, and Essential Java
Classes.
Learning JavaScript? Free online books such as Speaking
JavaScript. Other resources are listed on my blog.
10/17/2016 57How to pass a coding interview as an automation developer
58. Step 2: Read the Documentation:
Learning Java? Java has official “Learning trails” with chapters such
as Getting Started, Learning the Java Language, and Essential Java
Classes.
Learning JavaScript? Free online books such as Speaking
JavaScript. Other resources are listed on my blog.
Step 3: Solve Coding Problems on Paper
Make up simple homework examples and solve them on
paper while reading documentation.
DON’T DO CRAM SESSIONS
Create functions that do mathematical operations or string
comparison.
10/17/2016 58How to pass a coding interview as an automation developer
59. Mathematic Examples:
Sketch out on paper a function that uses a for loop to print out,
in the range of 1 to 100:
All even numbers within that range
All odd numbers.
All numbers divisible by three
All numbers divisible by three and five
String Manipulation:
Sketch out a function that takes in a string s and returns:
The length as an integer (Java: s.length)
The first character (s.charAt(0) )
The last character (s.charAt(s.length - 1) )
10/17/2016 59How to pass a coding interview as an automation developer
60. 10/17/2016 60
During the Coding Interview
How to pass a coding interview as an automation developer
1. Define the problem:
Take a moment to think of what information you need from
the interviewer to solve the problem.
Do candidates immediately jump into the code, possibly not
realizing that the specs are unclear?
Or do they take a step back, examine the problem and gather
the requirements?
61. 10/17/2016 61How to pass a coding interview as an automation developer
2. Start with initial test cases:
Do candidates come up with enough edge cases to test their
code? How thorough are they? Do they go through test data
with us?
If Palindromes are matched character by character, space by
space:
“noon”, “racecar”
“Madam, I’m Adam”
“Alpha”
“A Man, A Plan, A Canal: Panama!”
Single character strings?
Empty Strings?
62. 10/17/2016 62How to pass a coding interview as an automation developer
3. Walk the interviewer through solution
Does the candidate sketch out the problem, talking out loud so the
interviewer can get a sense of the candidate's thoughts on solving
the problem?
63. 10/17/2016 63How to pass a coding interview as an automation developer
3. Walk the interviewer through solution
Does the candidate sketch out the problem, talking out loud so the
interviewer can get a sense of the candidate's thoughts on solving
the problem?
4. Come up with a solution
Can the candidate write clear and concise code?
64. 10/17/2016 64How to pass a coding interview as an automation developer
3. Walk the interviewer through solution
Does the candidate sketch out the problem, talking out loud so the
interviewer can get a sense of the candidate's thoughts on solving
the problem?
4. Come up with a solution
Can the candidate write clear and concise code?
5. Debug and Test Your Code
Does the candidate accept feedback gracefully?
65. 10/17/2016 65
Summary
How to pass a coding interview as an automation developer
Find basic coding problems on the web.
Solve them with a pen and paper.
Find official documentation to see if built in functions can help
you
Come up with your own solution first
Don't do cram sessions. That merely store the information in
your short-term memory.
Practice a little bit at a time
66. Don't go through all this effort just to pass a
whiteboard test.
Aim higher! Make it your goal to be a better
programmer.
Thank you!
10/17/2016 How to pass a coding interview 66
67. 10/17/2016 67
Appendix: Palindrome Solutions
How to pass a coding interview as an automation developer
public boolean isPalindrome(String s) {
int head = 0;
int tail = s.length() - 1;
while (head < tail) {
if (s.charAt(head) != s.charAt(tail)) {
return false;
}
head++;
tail--;
}
return true;
}
Attempt #1:
68. 10/17/2016 68How to pass a coding interview as an automation developer
public boolean isPalindrome(String s) {
int len = s.length;
for (int i = 0; i < len / 2; i++) {
if ( s.charAt(i) != s.charAt(len-1- i)) {
return false;
}
}
return true;
}
Attempt #2:
Write the code using a basic for loop.
69. 10/17/2016 69
Further Reading
How to pass a coding interview as an automation developer
Coding Interviews:
Gayle Laakmann McDowell's book, Cracking the Coding
Interview
"Get that Job at Google", Steve Yegge, March 12, 2008
"Get that Job at Facebook", Carlos Bueno, July 20, 2012
Practice Questions:
Top Ten Algorithms For Coding Interviews
The slides are at:
http://slideshare.net/tjmaher1
Editor's Notes
I’ve include a lot of links to reference material in these slides. If you wish to get a copy of them, I have uploaded them to my slideshare account at Slideshare.net/tjmaher1. You’ll see that link again at the end of the talk.
Before I begin talking about myself and my interview experience, by a show of hands, are there any people who aren’t software testers or in the Quality Assurance field?
… Good! Welcome! I’ll make sure I’ll to cover a bit of what a QA Person is for you.
Now, where are the manual testers? By a show of hands, who are the manual testers who are trying to switch over to automation? With this talk I’ll go into the basics of the automation development interview process and how to prepare.
How many people are already automation developers? … have you job searched recently? The interview process changed a bit in the past two years. I will cover that, too.
Now, any software developers in the audience?
During the question and answer sessions, we will really need your input. There may be misconceptions that I have that you can help straighten out for me.
Hiring managers looking for manual testers? How many hands are up? Manual testers, make sure to meet these people after the presentations.
Hiring managers looking for automation developers? How many hands are up?
Good evening! I’m T.J. Maher. Even though I have been in the software industry for the past twenty years, I just started getting involved with Selenium WebDriver fairly recently. Around three years ago, I started taking a few courses in Selenium WebDriver with Java.
Last year, back in March 2015, I went from executing other peoples automated tests at one job to writing my own tests in another. I captured my Adventures in Automation in my blog, tjmaher.com. This year I have been turning blog posts into articles.
When I found myself this summer suddenly needing to find a new job after a shift in managers raised the bar a bit too high for me, this time around, I found the interview process remarkably changed in just two years. I wrote about that experience, too.
I published last month an article “How to Pass a Coding Test As an Automation Developer” based this summer’s job search.
Knowing that I wanted to get some practice public speaking Conrad suggesting I build a talk around the article. Thank you Conrad for this opportunity!
I want to apologize for my heavy use of notes during this talk. I just started a new job last Monday, and the time I wanted to use to memorize the talk went into learning the ropes of the new job. I’m now a Software Engineer in Test. It’s weird: for the first time in twenty years, I don’t have the words “QA” in my job title.
As a QA Engineer I’m an end user advocate. I don’t just do software testing. I shepherd the Quality process …
I try to build a model of the customer that is using the product and carry that model throughout the entire software development life cycle.
As with any job, there are fun parts, and not so fun parts …
The fun parts for me is testing the brand new functionality the developers are creating. Developers and testers shouldn’t work like being an artist to an art critic. They should be like a writer and a copyeditor: separate disciplines working together to make a quality product. I test the Software requirements …
acceptance criteria …
the software development process …
the software itself …
and my own assumptions about the product and how it is supposed to work…
Okay, okay finding bugs is fun too. Don’t tell the developers…
There are not so fun parts of my job…
Two words: Regression testing.
Making sure the new feature built did not break the old functionality…
There is nothing more boring than testing the same exact workflow in IE 8, IE9, IE10, IE 11 …
MS Edge … Chrome, Firefox, … Safari on the Mac, etc…
Automation development makes regression testing fun. You are writing software to test the software. That is what I have been doing as an automation developer…
Using Selenium WebDriver to emulate a user navigating through the web application …
Or testing at the webservices layer, what the browser interacts with.
When I found myself unexpectedly job searching for a new automation development position, judging by what I experienced two years ago, I thought the technical portion of the interview could go one of two ways …
Assumption #1: The technical interview would be based around my automation experience …
Assumption #2: I’d walk into a room, find a laptop pre-installed with IntelliJ or Eclipse, I’d be directed to a web page, and ask to automate it. Or I would be directed to a whiteboard, and I’d be asked to write code to, say, log into a login page using sendKeys to input a user name and password, and click a button.
Those were most of the interview questions I was asked two years ago. This time around, it was something completely different.
After chatting for a bit and giving my background, a developer instructed me to go to the whiteboard and answer the following:
“Using your favorite programming language: Write a method that checks to see if a given word is a palindrome.
“Example palindromes: ‘noon’ and ‘racecar’.”
I must have started at the whiteboard for a good two minutes while the developers watched silently, waiting for me to do… anything! I scribbled something on the board, I am not sure what.
I stopped. Erased what I had written. Wrote something else. I just didn’t know how to answer this question. I was completely unprepared …
After getting through only half of the assigned problem…
I joked with the interviewers …
If only I was coding an automated test, I would be doing a lot better. Yes, I had been doing Java coding, but I only had focused on how it manipulated Selenium WebDriver …
If only I had a laptop in front of me, loaded with IntelliJ! Or if I had been demoing an automation script I had written…
Their response …
All employees are expected to meet a certain minimum standard of coding knowledge, even for quality assurance positions.
And that, my friends, is how I started my new job search …
It seems that I stumbled on a new requirement: These types of whiteboard coding questions were asked in ten out of twelve jobs I interviewed with this summer.
Okay, by a show of hands, how many people know Spanish? Did you take it back in high school and college? You might know Spanish, but are you fluent in it? Let’s say you had a beginning job translating English to Spanish with an English to Spanish dictionary and a phrasebook close at hand? If you had the dictionary and phrasebook taken away, and were asked suddenly during an interview to go to the whiteboard and write a paragraph on what you had for breakfast this morning it would be difficult. That is how it felt without the development environment IntelliJ and the Java Documentation close at hand.
My work experience as an automation development hadn’t prepared me to answer the types of coding questions given. If I was asked a Java question that related to Selenium WebDriver and automated testing: How to compare two string values, such as when I am setting up a test where the expected alert message on a page matches the actual alert message appearing on the page. At the time, I did not have the basic fluency in Java that they were looking for …
I found that automation developers would be asked the same questions as software developers …
Why? This might sound naïve to any software developers, but I found it astounding that Automation developers are Software developers. You see, just five years ago, a QA Engineer wouldn’t be expected to know how to code at all. Three years ago, automation developers were manual testers who were learning how to assemble automated tests. Now, they seem to be straddling being a QA Engineer and a Software Engineer …
Companies are now looking for the same code quality in the automation test framework as the software application itself.
That’s the question, isn’t it? How do we become fluent in coding? …
Step 1: Take a Refresher Course:
Members of the Boston Public Library get a free subscription to Lynda.com …
Massively Open Online Courses such as Mooc.org, indexes absolutely free edX courses from Harvard, MIT and other colleges dealing with Computer Science, Java …
Coursera.org by Duke, Stanford, Johns Hopkins ..
Udacity.org, backed by Google, AT&T and Amazon, also has free courses in Java, JavaScript, etc. Learn by creating projects.
Step 2 to becoming fluent: Read the Documentation:
Learning Java? Java has official “Learning trails” with chapters such as Getting Started, Learning the Java Language, and Essential Java Classes…
Learning JavaScript? Free online books such as Speaking JavaScript. Other resources are listed on my blog…
Step 3 to becoming fluent: Solve Coding Problems on Paper …
Make up simple homework examples and solve them on paper while reading documentation…
DON’T DO CRAM SESSIONS: You want to work this knowledge into your long term memory, building up over time…
Sample Homework Examples: Draft functions that do mathematical operations or string comparison.
Here are a few sample homework problems I am talking about that could get you started:
Sketch out on paper a function that uses a for loop that prints in the range of 1 to 100:
All even numbers within that range
All odd numbers.
All numbers divisible by three
All numbers divisible by three and five …
How about some string manipulation? Sketch out a public method that takes in a string s and returns:
The length as an integer (Java: s.length)
The first character (s.charAt(0) )
The last character (s.charAt(s.length - 1) )
Here's what I hadn't realized when I went on that first coding interview. The two stone-faced developers observing me having a brain freeze and getting flustered in front of the whiteboard weren't just silently watching. They were waiting.
The first think I should have done was Define the problem.
Take a moment to think of what information you need from the interviewer to solve the problem…
Do candidates immediately jump into the code, possibly not realizing that the specs are unclear, or do they take a step back, examine the problem and gather the requirements?
If you remember, the problem I was given was: "Write a method that checks to see if a given word is a palindrome. Example palindromes: 'noon' and 'racecar'.” …. What is the very first question I should have asked them? … “What is a palindrome”
They would have replied: "We are looking for a string and its reverse to match exactly, character by character."
"Your solution should be case sensitive. An uppercase 'R' should not match a lowercase 'r'. "
2. Start with initial test cases: …
Do candidates come up with enough edge cases to test their code? How thorough are they? …
If Palindromes are matched character by character, space by space:
“Noon”, “Racecar” …
“Madam, I’m Adam”
“Alpha”
“A Man, A Plan, A Canal: Panama!” …
Single character strings?
Empty Strings?
3. They also were trying to see if I could Walk the interviewer through solution
Does the candidate sketch out the problem, talking out loud so the interviewer can get a sense of the candidate's thoughts on solving the problem?
4. Come up with a solution
Can the candidate write clear and concise code?
5. Debug and Test Your Code according to their new changes given
Does the candidate accept feedback gracefully?
Gaining basic fluency in a programming language and being able to demonstrate it will not happen overnight, but it can happen. Here's how to proceed …
Find basic coding problems on the web …
Attempt to solve them with a pen and paper …
If you can't solve them, look at the official documentation of the programming language and see which built-in language methods will help you out …
Come up with your own solution first before seeking out a better solution elsewhere. If you do your own research and investigation, chances are the information will stick in your mind permanently.
Don't do cram sessions. That merely storea the information in your short-term memory…
Practice a little bit at a time—maybe 15 minutes a day. You want this information to move to long-term memory, so you can recall information even during extreme interview stress …
The main takeaway is this: Don't go through all this effort just to pass a whiteboard test...
Aim higher! Make it your goal to be a better programmer. Thank you …
Thank you.
If you want, I included two of the solutions that I came up with.