• 0

Programmers: Your favorite interview questions


Question

I haven't seen one these posts yet on this forum(if there is forgive me : )), but I figured to help out more people looking for programming work I would start a post for employers who are looking to hire new programmers what kind of questions you guys ask. I'm the technical director at a small game studio in LA, and were expanding so I also looking to see what everyone does so I can adjust accordingly.

Some of the basic questions I ask are:

What is global scope/local scope.

What is a template class

What is inheritance/polymorphism/etc.

Than some really basic logic stuff like whats a recursive function, etc etc.

Than I begin to ask a couple questions that are kind of off the wall because one thing I noticed is College graduates from big schools such as UCLA 9/10 can't figure stuff for themselves. Students are so used to stuff getting spoon fed to them, some of which is just nasty. One thing that really irritated me at one of the studios I worked at previously a couple of there senior programmers came to me and said "I don't know how to do xyz, can you help?" This normally is a pretty common thing, except when xyz happens over and over again and its something that easily be found by doing a quick google search.

I ask the interviewee if they can do something that 99% of the programmers out there can't do. They would obviously say I don't know, I would then ask them than to look it up for me on google and write out basic steps on how to get it done. Lets say I ask them how to register a custom Debug Engine in Visual Studio, first google search for "visual studio custom debug engine" which turns up http://msdn.microsof...4(v=vs.80).aspx , with a link to http://msdn.microsof...(v=vs.110).aspx. Even though the information on the latter article is actually wrong if they copied that I would be so happy. I've had guys sit there for 10 minutes struggling, and I feel that's kind of ridiculous. Every programmer in world should know how to use google :/.

Than depending on the level of the job, I would go into some more nitpicker things say in Unreal, Unity, D3D, whatever and if someone didn't know the answer I would ask them to google it and give me an explanation. I had actually had one guy who didn't graduate from a college, straight out of high school and he didn't know something I asked him, and than he immediately asked if he could go on google and look it up. I actually hired him on the spot and he ones of the best programmers I've ever had.

Anyway what kind of stuff do you guys ask?

Recommended Posts

  • 0

Well, there is our main difference: Im not passionate about code, I just want to write code to get me paid :)

 

as a sysadmin that takes care of hundreds of servers, that attitude bothers me; i've seen software made by top companies in my country so badly done and inefficient that hurts the clients (wallets), like requiring 16GB of RAM in a server just for an app, as an example i've recently found, not even mentioning the amount of RAM for SQL, etc.

 

funny thing is: when i questioned one of the project managers of one of those companies about the lack of optimization and high resources, the amount of crap that came out of his mouth showed what that they care is the paycheck, not the costumers (short signed because now they are gonna lose this same client).

  • 0

For weighing a recursive implementation versus iterative, there are several factors to consider. But in the end, if it's a perf critical path, the real answer is "measure, measure, measure."

The point in the explicit stack + iteration case I gave though is that it is just a recursive solution expressed explicitly. You are just reimplementing the call stack by hand and that's basically always going to be slower in practice than letting the memory be handled by the call stack. There are numerous reasons why, such as, algorithmic choices for the manual stack implementation, sanity checking when pushing/popping, introducing additional subroutine calls; or to say it another way: you increase the operation count & moved from direct stack allocation (via the call stack) to using heap allocation (via the explicit stack).

 

Going back to what I was originally saying, in terms of it taking more time to write efficient code versus not: all you are really doing in these types of cases is spending a lot of time trying to optimize out recursion for not because in the end you just end up re-implementing a recursive solution that looks iterative. And what's more is that it is less efficient in practice but doesn't look like it is to many people outside of compilers so the "efficient" implementation ends up staying in the code base  ;)

  • 0

as a sysadmin that takes care of hundreds of servers, that attitude bothers me; i've seen software made by top companies in my country so badly done and inefficient that hurts the clients (wallets), like requiring 16GB of RAM in a server just for an app, as an example i've recently found, not even mentioning the amount of RAM for SQL, etc.

 

funny thing is: when i questioned one of the project managers of one of those companies about the lack of optimization and high resources, the amount of crap that came out of his mouth showed what that they care is the paycheck, not the costumers (short signed because now they are gonna lose this same client).

At the end of the day the most important thing is the paycheck. Well actually making sure that your customers keep buying your product which gives you a paycheck.

Note the words: I said "making sure your customers keeping buying your product". I never said anything about "making sure your customers are happy". Big difference.

But at the end of the day, I guess people that like to program dont worry about the paycheck too much and do want to make their customers happy.

  • 0

We don't look for programmers, we look for solution providers, individuals that are passionate about the code they write, the way they work with other developers as well as our end users. They are valued contributors to the success of the company, not just a room full of 'coders'. Do I care if they can split a TIF image and do page manipulation in an interview. Nope... even though that might be their first problem. I care about how they think about problems and how they go about learning the things they don't know.

And that's the kind of attitude from a company that I look for in an interview. The interview process tells me a lot about the type of people that work there, and I want to work with, as you say, passionate solution providers, not "coders". I find the very idea that my job is to "produce code" abhorrent. I usually first try to solve problems by deleting code, actually, i.e. "do we really need to do this? is this code still relevant? can this be done more simply?" Code is technical debt, the less the better.

  • 0

 

I'll be honest, guys like you stand out like a sore thumb in interviews. Maybe not where you are located, but certainly in my shop. There is difference between telling someone what you think they want to hear and having a thoughtful discussion about writing code and solving problems. We don't look for programmers, we look for solution providers, individuals that are passionate about the code they write, the way they work with other developers as well as our end users. They are valued contributors to the success of the company, not just a room full of 'coders'. Do I care if they can split a TIF image and do page manipulation in an interview. Nope... even though that might be their first problem. I care about how they think about problems and how they go about learning the things they don't know.

 

That was good to read and im glad there are still companies and people out there who get this.  You need people who can just get in and code but innovation and building the sort of culture that fosters creativity, cultivates new developments and just the capacity to think outside the box to deliver client solutions, those aren't the qualities you find by asking a lot of the questions in this thread.

  • 0

If I was then I would give them a Fizz Buzz Test + Write Simple Function to print Manager - Employee Hierarchy with Reporting Level (hint : Recursive). I have seem 99% applicants failing that.

 

I'm not an interviewer, but if I was I think I would always start with the Fizz Buzz Test. Filtering out 99.5% of incompetents with such a simple question is appealing :)

  • 0

FizzBuzz is BS. Everyone knows it. It's a stock question.

My current go to question is to write (language agnostic) the logic for expressing a given monetary value using the least notes and coins possible.

It's ridiculously easy but it let's you see how they work, the way they optimise code.

  • 0

FizzBuzz is BS. Everyone knows it. It's a stock question.

My current go to question is to write (language agnostic) the logic for expressing a given monetary value using the least notes and coins possible.

It's ridiculously easy but it let's you see how they work, the way they optimise code.

 

You'd be surprised how many get FizzBuzz wrong  :laugh:

Your monetary value question, is that not a just a division and modulus question (not really thought about, but it can't be more complicated than that can it?)

  • 0
Your monetary value question, is that not a just a division and modulus question (not really thought about, but it can't be more complicated than that can it?)

 

It CAN be.  But it's how they do it.

 

I've had people loop with a while statement to see if the outstanding > 0, or I've had people loop through an array of denominations, heck I've had one person write way too many if statements.

 

My personal favourite (when I was solving it) was to define a class of denomination that has a rendered value and an actual value, a type of coin or note, etc.  Create an array of denominations representing the locale's currency.  Sort the array (highest to lowest) using a function to sort by the denominations actual value.  Then for each denomination, divide the outstanding balance by said value, floor it, subtract that amount.  Move to next.

  • 0

It CAN be.  But it's how they do it.

 

I've had people loop with a while statement to see if the outstanding > 0, or I've had people loop through an array of denominations, heck I've had one person write way too many if statements.

 

My personal favourite (when I was solving it) was to define a class of denomination that has a rendered value and an actual value, a type of coin or note, etc.  Create an array of denominations representing the locale's currency.  Sort the array (highest to lowest) using a function to sort by the denominations actual value.  Then for each denomination, divide the outstanding balance by said value, floor it, subtract that amount.  Move to next.

 

I hate these tests and I would probably fail most of them. However I love coding, it's a passion. And I love to learn. My opinion: a lot of companies are just missing out on pretty damn good and passionate developers. I've seen my share of code monkeys, non-user centric and lazy developers who do pass these tests. To me, they don't prove much.

 

And to answer the original question "Programmers: Your favorite interview questions": none! Just let me write useful code dammit! :rofl:

  • 0
I hate these tests and I would probably fail most of them. However I love coding, it's a passion. And I love to learn. My opinion: a lot of companies are just missing out on pretty damn good and passionate developers. I've seen my share of code monkeys, non-user centric and lazy developers who do pass these tests. To me, they don't prove much.

 

This isn't about code, it's proven itself to be about how well developers understand what is being asked.  Seriously, I have had some abhorrent interviewees recently!

This topic is now closed to further replies.
  • Recently Browsing   0 members

    • No registered users viewing this page.
  • Posts

    • Wow, Microsoft IS cooking lately... This only shows that they COULD improve, they just chose not to for whatever reasons. That obsession with AI was destroying them from the inside out.
    • BATorrent 4.1.0 by Razvan Serea BATorrent is a lightweight, open-source BitTorrent client built with modern C++ and Qt 6, offering a clean, fast, and privacy-focused alternative to traditional torrent apps. It supports magnet links, .torrent files, resume data, sequential downloading, per-file priorities, and even imports from qBittorrent. Power users benefit from integrated RSS auto-download with regex filtering, duplicate detection, and automatic tracker lists from Stremio. Streaming is seamless thanks to auto-detected players like VLC and IINA. BATorrent includes robust VPN tools—interface binding, auto-detection for WireGuard-based services like Mullvad and NordLynx, kill switch, proxy support, and IP filtering. A full WebUI enables remote control, while integrations with Plex, Jellyfin, and Emby automate library updates. With themes, speed scheduling, system-tray alerts, and cross-platform support for Windows, Linux, and macOS, BATorrent delivers a polished, high-performance torrenting experience. BATorrent features: Core .torrent file and magnet link support Resume data — picks up where you left off after restart Import torrents from qBittorrent Create .torrent files from any file or folder Sequential download mode Per-file priority control (skip, low, normal, high) Seed ratio limits with auto-pause DHT, PEX, UPnP, NAT-PMP RSS Auto-Download Subscribe to RSS feeds — automatically download new torrents as they appear Regex filters — match only what you want (e.g. 1080p|720p, S01E\d+) Per-feed settings — custom save path, check interval (5–1440 min), enable/disable Auto-download — matched items are downloaded automatically in the background Supports magnet links, .torrent URLs, and tags Tray notifications when items are auto-downloaded Duplicate detection — never downloads the same item twice Stremio Stremio Addon System pre-installed — works out of the box Auto tracker list from ngosang/trackerslist Streaming Play while downloading — stream video files before the download is complete Supports mp4, mkv, avi, mov, wmv, flv, webm, m4v, ts Auto-detects installed players (VLC, IINA, system default) VPN & Privacy Interface binding — lock torrent traffic to a specific network interface (e.g. tun0) Auto VPN detection — identifies VPN interfaces (tun, tap, WireGuard, Mullvad, NordLynx, ProtonVPN) Kill switch — automatically pauses all torrents if the VPN interface drops Auto-resume — resumes only the torrents paused by the kill switch when VPN reconnects Proxy support — SOCKS5 and HTTP proxy with optional authentication IP filtering — load P2P blocklists to block unwanted IP ranges Protocol encryption (enabled / forced / disabled) WebUI Remote management — control torrents from any browser at http://localhost:8080 REST API with JSON responses Add torrents via magnet link or .torrent upload Pause, resume, remove torrents remotely View peers and files per torrent Dark theme matching the desktop app HTTP Basic Auth with SHA-256 password hashing Configurable port and remote access (localhost vs 0.0.0.0) Interface 3 themes: Dark, Light, Midnight (bat/vampire aesthetic) Real-time speed graph Detailed panel with tabs: General, Peers, Files, Trackers Filter bar: search by name, filter by state (Active, Downloading, Seeding, Paused, Finished) Drag & drop .torrent files and magnet links Drag & drop reorder in torrent list System tray with notifications (download complete, kill switch events, RSS auto-downloads) Splash screen with bat animation Bilingual: English and Portuguese (BR), auto-detected from system locale Bandwidth Scheduler Alternative speed limits — set different download/upload limits on a schedule Time range — configure active hours (e.g. 01:00 to 07:00), supports overnight ranges Per-day control — choose which days of the week the schedule applies Automatically switches between normal and alternative speeds Media Server Integration Plex — automatically trigger library scan when a download completes Jellyfin / Emby — same automatic library refresh via API Configure server URL and authentication token/key in Settings System Cross-platform: Windows, Linux, macOS Auto-shutdown — automatically shut down PC when all downloads complete (60s cancellable countdown) Auto-update system (AppImage on Linux, installer on Windows, DMG on macOS) CLI arguments: pass .torrent files or magnet: URIs directly Keyboard shortcuts: Space to toggle pause, Ctrl+A to select all, Ctrl+O to open BATorrent 4.1.0 release notes: A community-driven release: everything here came straight from your reports and requests. It closes the remaining gaps with qBittorrent and fixes the Windows settings/tray/splash issues several of you hit. Fixed Settings now actually save. A whole class of preferences — speed limits (and the alternative limits), max active downloads, seed ratio, listen port, max connections, DHT/uTP/encryption, VPN interface, kill switch and proxy — weren't being persisted and reset to defaults on every launch. They now round-trip correctly. (Thanks to everyone who reported "the upload limit always goes back to 0".) Splash and tray toggles stick on Windows. Turning off the startup animation (or "close to tray") no longer reverts — the Windows registry stored these booleans as integers and the UI was misreading them. Close-to-tray hint. The first time the window hides to the tray you get a one-time notification, so the app doesn't look like it vanished (Windows 11 tucks new tray icons into the overflow). macOS Dock icon size. The icon filled its canvas edge-to-edge and rendered larger than neighbouring apps; it now uses the standard safe-area padding. Native file picker language. The "Torrent file / All files" filter in the open dialog follows the app language instead of being hard-coded. Added — qBittorrent parity Alternative speed limits toggle — a turtle button in the toolbar flips your throttled limits on/off instantly, independent of the scheduler. Follow system theme — switch light/dark automatically with the OS (Settings → Appearance). Pre-allocate disk space — reserve the full file size up front to reduce fragmentation (Settings → Downloads). Recheck data on add — optionally force a hash check when adding a torrent, so existing or partial files on disk are detected. Port status indicator — a 🔴 dot in the status bar shows whether your listen port looks reachable (UPnP/NAT-PMP + listen state; fully local, no external check). Add torrent from URL — File → Add torrent from URL (Ctrl+U) fetches a remote .torrent and routes it through the normal add dialog. Export .torrent — right-click a torrent → Export .torrent to save its metadata file. Already there (in case you missed it) Watch folder — auto-add .torrent files dropped into a monitored directory (Settings → Files). This release just surfaces it. Incomplete files already carry a .!bt suffix until they finish. Under the hood Regression tests for the settings-persistence and Windows boolean bugs. A new Qt Quick Test harness covering the startup splash and the design-system widgets. Download: BATorrent 4.1.0 | 37.5 MB (Open Source) Download: BATorrent Portable | 51.7 MB Links: BATorrent Website | Screenshot | Changelog Get alerted to all of our Software updates on Twitter at @NeowinSoftware
    • Disabling open on hover, great! That was so stupid! They need to do a fix, where if a network share is disconnected, it doesn't hang when opening "This PC" for 20 seconds.
  • Recent Achievements

    • Very Popular
      AndrewSteel earned a badge
      Very Popular
    • Veteran
      Taliseian went up a rank
      Veteran
    • One Month Later
      Clizby earned a badge
      One Month Later
    • One Month Later
      Timaximus earned a badge
      One Month Later
    • Week One Done
      Timaximus earned a badge
      Week One Done
  • Popular Contributors

    1. 1
      +primortal
      523
    2. 2
      PsYcHoKiLLa
      170
    3. 3
      +Edouard
      162
    4. 4
      Steven P.
      83
    5. 5
      ATLien_0
      78
  • Tell a friend

    Love Neowin? Tell a friend!