Files
ObsidianJournal/Work/Jose De Jesus interview.md

2.4 KiB

Positives:

  • Speaks excellent English
  • Obviously very familiar with Visual Studio, used short cuts like autocompleting property definitions
  • Seems very calm and worked immediately, very straightforwardly
  • Created well-defined methods on Board to facilitate various functions like "reveal box" and "flag box"
  • Able to talk through his work well, explaining as he went along
  • Used a nested loop and Math.Max and Math.Min to reveal box around the revealed box
  • A user-facing thoughtful thing: he cleared the console at the top of each input loop
  • Used StringBuilder to render the board output, but decided against it later
  • Used string interpolation (newish C# capability) to render mine box content
  • Excellent output message to user to give clear instructions on commands to input
  • Showed familiarity with debugging
  • Abstracted the PrintGrid functionality to a method to be able to call it multiple times
  • Considered the user not knowing the array was 0-based

Concerns:

  • Didn't appear to come super prepared with the solution in mind
  • I'm not 100% certain he read the specification in detail, but relied on his memory of how minesweeper worked
  • Very minor: used different terms for the same thing bombFound but MineBox

Other comments:

  • Created class for MineBox and Board
  • Used multi-dimensional array of MineBoxes in Board
  • Used Random to set mines randomly around the board
  • Used a while loop in Program until bool gameEnded was reached
  • Used Convert.ToInt32 instead of int.Parse to get coordinates from console input line
  • Ran into issues looping and redisplaying the board

Questions to ask:

  • What could you do to take your game logic and render it any way you wanted to (console, HTML, graphical...) Could do a virtual method on Board to allow clients to override it to render the board
  • Why did you choose to have Program.cs "own" the rendering of the board instead of Board?
  • Could you have Board "own" the rendering without it knowing exactly what it's renderings (strings, icons, HTML elements, etc)?
  • Explain your choice to use Convert.Int32?
  • You loop over the entire board or parts of the board (nested loops) a couple of times. How could you abstract that logic while still using it for different purposes? Would have to iterate the board each time. When I explained
  • Could you abstract the Game logic to untie it from the rendering and board?