CodingInterview.net Review: Browser Coding, SQL, and Low-Level Design Practice
Quick Overview
See tested Python and SQLite submissions on CodingInterview.net, then practice object-design invariants and check browser progress limits.
CodingInterview.net gives you three different ways to tell whether an interview answer holds up. In the coding editor, you can submit a function against hidden cases. In the SQL workspace, you can inspect a schema and check the shape of a result on hidden datasets. In low-level design, the work starts with deciding which object owns a rule and showing that it holds after a retry. The first two produce a test result quickly. The third needs a design argument as well as executable checks.
We used the public site without signing in. A Python Two Sum submission passed eight cases, and a SQLite query for the second highest salary passed five datasets. Those are results for the two tasks we opened. The broader language and storage behavior below is the provider's description where we did not test it. CodingInterview.net home · Coding practice catalog
Compare the function contract with Create a Function for a Requested Distinct Salary Rank.

Coding practice with a visible baseline and a hidden check
The Two Sum page gives you a Python starter, visible inputs and two execution controls. The Run button says it runs visible cases. Submit says it includes hidden cases. We ran the untouched starter and saw Wrong Answer, then ran a hash map implementation and saw Accepted. The subsequent Submit returned 8/8. We kept the same problem and language for both trials. That makes this an observation about a particular public grading path. It leaves the coverage of other problems, languages and runtimes open. Two Sum workspace
The duplicate input tests whether you can explain the lookup order. On [3, 3] with target six, the first index stores the value only after checking for a prior match. On the second index, the map supplies zero and the current index is one. Checking after writing can use the same position twice. This is the implementation we submitted, with the platform's assumption that a pair exists.
class Solution:
def twoSum(self, nums, target):
seen = {}
for i, value in enumerate(nums):
need = target - value
if need in seen:
return [seen[need], i]
seen[value] = i
Each array element is visited at most once, and hash lookup and insertion take expected constant time under the usual assumptions. The map can hold a linear number of values. For a fresh interview, ask what happens if the result must be the lexicographically smallest pair, if multiple pairs are possible or if inputs arrive as a stream. The accepted result tells you the code met this task's tests. Different tie-breaking requirements can invalidate the early return while preserving the same general technique.
The vendor identifies Python, JavaScript and TypeScript as automatically judged in its practice catalog. It describes a built-in compiler for additional languages such as Java, C++ and Go. Before relying on a language for a timed round, open a task and verify that the action you need is available for that language. Running a snippet and getting the same hidden-case judge are different capabilities. A compiler is still useful for reproducing an overflow or checking a type, even if you need another setup to evaluate the complete problem contract. Coding practice catalog
SQL practice when a missing answer still needs a row
The SQL catalog identifies its browser database as SQLite. In Second Highest Salary, the schema lists a staff table and a monthly_pay column. The requirement is one result row with the second distinct amount, or a single NULL when there is no second distinct amount. We submitted the aggregate query below through the public SQL editor. The result showed 5/5 datasets passed. The public workspace displays a schema and expected output, then checks the submission on additional datasets. SQL practice catalog · Second Highest Salary workspace
SELECT MAX(monthly_pay) AS second_highest
FROM staff
WHERE monthly_pay < (SELECT MAX(monthly_pay) FROM staff);
Work the example by hand with salaries of 90, 90, 60 and NULL. The inner aggregate finds 90. The predicate excludes both copies of 90. The NULL comparison does not pass the filter. The outer aggregate returns 60. With salaries of 90 and 90, the predicate leaves no qualifying rows. The outer aggregate still returns one row, whose value is NULL. A query with DISTINCT, ordering and an offset can identify the second amount when it exists, but on an empty second position you need a scalar wrapper or another mechanism to preserve the row. SQLite aggregate function reference
Use that shape check on other tasks before thinking about syntax. A scalar answer has one row even when no match exists. A grouped report may need a row for every segment from a separate dimension table. A list of qualifying employees can legitimately be empty. Read the requirement for sorting and exact column names as well. The salary task allows any row order, which is immaterial when there is exactly one row. A ranking exercise with multiple equal salaries may give an explicit tie-break rule that changes what the judge expects.
SQLite is a practical environment for joins, aggregate functions and many window examples. If a hiring exercise specifies PostgreSQL, SQL Server or BigQuery, run the final query in the specified engine before counting yourself ready. Date arithmetic, casts and dialect-specific functions can change even when the business logic is the same. Write down the intended grain and make a tiny fixture with ties, missing values and one absent group. That fixture transfers to the next dialect even when the query needs editing.
You can run the salary fixture locally with the same schema even if the browser editor is unavailable. Add four rows for the first case, then delete the row with 60 and run it again. Check the column name and both result shapes. For a second variation, ask for the people whose salaries match the second distinct amount. A scalar subquery can compute that amount, and an outer query can return all matching employees. If there is no second amount, the list of employees should now be empty. The result shape changed because the question changed.
A timed practice round rewards noticing such distinctions early. Spend the first minute writing “one scalar result” or “one row per matching employee” in your notes. Then check the expected sample. Make that habit as routine as saying the Python function returns indices rather than values. Your fastest query is only useful when its result represents the right thing.
Use the low-level design track to make behavior explicit

The system design roadmap includes both distributed-system examples and a low-level design stage. It links to parking lot and elevator examples and describes the low-level work in terms of classes, interfaces, state and core operations. Read a worked solution after you commit to one rule. The value is in finding a decision you would change and the behavior that would prove the new model is sound. We inspected the roadmap and linked design material. Our coding and SQL submissions did not exercise a general LLD judge. System design roadmap · Parking lot design
Consider this original parking-garage exercise. There is one compact spot, one large spot and a request ID on each entry call. A compact car may occupy either spot, and a van can only use the large spot. Two entrances can call allocation at the same time. Choose a spot policy and identify which object updates the inventory. A compact car takes the smallest fitting available spot, preserving the larger one for a van. A repeated request ID returns the existing ticket. A second distinct request must check the updated availability.
| Sequence | State you should observe | What the design must explain |
|---|---|---|
| Car A enters with request R1 | Compact spot allocated and ticket T1 issued | Reservation of the spot and ticket creation form one state change. |
| Entrance retries R1 after a timeout | T1 returned with the same spot | A retry lookup happens before a fresh allocation. |
| Van B enters with request R2 | Large spot allocated with ticket T2 | The compatibility policy rules out the compact spot. |
| A second van arrives | Rejected as full for its size | Failed allocation leaves both tickets and spots intact. |
| T2 is closed twice | The large spot becomes free once | A repeated close cannot free a later occupant's spot. |
An interviewer may extend the exercise by adding charging spots. That tests your eligibility rule, which can be represented separately from ticket storage. Another extension is a second process at a remote entrance. A local lock only protects threads sharing one object in one process. Explain where the atomic allocation lives if two processes share inventory. Keep the test that proves the original invariant and add one for simultaneous claims. That is a sharper comparison between two object models than a count of classes or design patterns.
Free practice and what the browser remembers
The provider advertises free practice without an account. Its home page describes local progress, review scheduling, timed mode and browser-side feedback. We used the two grading paths above without an account. We did not migrate progress across devices, test recovery after browser data was cleared, or verify the execution location of every compiler and optional feedback path. Browser-local progress is convenient for repeated practice on one machine. Keep an independent copy of submissions and a short review log if you plan to change profiles or switch devices. CodingInterview.net product overview · My Progress
Separate the tool's verdict from your own notes. For Two Sum, save the duplicate case and a sentence about lookup order. For SQL, save the expected result for all equal salaries. For parking, save a trace showing one allocation per request ID and what happens when a repeated close arrives late. A solved badge tells you what to revisit. Those notes give you a test to run when you revisit it.
We did not find independent candidate outcome evidence that would establish how the site's scores transfer to hiring results. Use the workspaces to practice exact contracts, then give yourself a changed requirement or ask a partner to supply one. The faster you can restate the new contract and write the new expected behavior, the more useful the original run was for interview preparation.
Practice the three contracts on new prompts
These PracHub questions give you a second input shape, a different row requirement or a different object invariant. Use the relevant row when you can explain what your first attempt actually verified.
| PracHub question | What to rehearse |
|---|---|
| Two Sum — Indices Summing to a Target | Verify separate indices when the two values match. |
| Create a Function for a Requested Distinct Salary Rank | Define the output when the requested distinct rank does not exist. |
| Illustrate SQL Join Results with Duplicate Keys | Draw how duplicate keys change SQL result cardinality. |
| Parking Lot Design: Smallest Fitting Spot for Three Sizes, Then EV Charging Fallback | Specify spot compatibility and the allocation order. |
| Select the Nearest Eligible Elevator | Explain how a new request changes elevator eligibility. |
Try Two Sum — Indices Summing to a Target after closing the earlier solution. State the contract before typing and name the case you would add if the visible examples were the only tests you had.
Comments (0)