Back to Manual QA

1. HTTP & Web Fundamentals

1. What is HTTP?
HTTP (Hypertext Transfer Protocol) is the protocol used for transferring data over the web. It defines how messages are formatted and transmitted, and how web servers and browsers should respond to various commands.
2. What is the difference between HTTP and HTTPS?
HTTPS (Hypertext Transfer Protocol Secure) is the secure version of HTTP. It uses SSL/TLS encryption to protect data transmitted between the client and server.
3. How does HTTPS send requests securely?
HTTPS uses TLS (Transport Layer Security) or SSL (Secure Sockets Layer) to encrypt the data. It involves a handshake process where the server presents a certificate to prove its identity, and then a secure, encrypted session is established.
4. How are HTTP status codes classified (1xx, 2xx, 3xx, 4xx, 5xx)?
1xx: Informational (Request received, continuing process). 2xx: Success (Request successfully received, understood, and accepted). 3xx: Redirection (Further action needs to be taken). 4xx: Client Error (The request contains bad syntax or cannot be fulfilled). 5xx: Server Error (The server failed to fulfill an apparently valid request).
5. What is JSON and how is it used?
JSON (JavaScript Object Notation) is a lightweight data-interchange format. It is easy for humans to read and write and easy for machines to parse and generate. It is commonly used for transmitting data in web applications (e.g., sending data from the server to the client).
6. What is the difference between cookies and cache?
Cookies are small text files stored on the client-side used for tracking user sessions and preferences. Cache is temporary storage used to store web page resources (images, scripts) to speed up loading times on subsequent visits.
What is a Test Oracle?
A mechanism, different from the program itself, used to determine if the output of a test execution is correct (e.g., a spec, a separate program, or human judgment).
What can you expect from a Coderbyte live challenge assessment?
A Coderbyte live challenge typically includes theoretical multiple-choice questions followed by coding exercises. The coding portion can cover algorithms, JavaScript, React, or other technologies depending on the company administering the test. Many walkthroughs and examples are available on YouTube to help you prepare.
If x people are at a gathering and each person shakes hands with every other person exactly once, how many total handshakes occur?
The total number of handshakes is x*(x-1)/2. Each of the x people shakes hands with (x-1) others, producing x*(x-1) ordered pairs. Because every handshake involves two people, the result is divided by 2. This is equivalent to the combination formula C(x, 2) = x! / (2! * (x-2)!).
What can typically be expected in a live coding interview?
Live coding interviews usually involve a short technical challenge designed to observe how a candidate thinks through a problem rather than to test perfection. Common formats include: solving an algorithm or data-structure problem, implementing a small feature or microservice, building a simple frontend component, or debugging and fixing existing code. In many cases the interviewer provides an existing repository along with a README that describes the requirements, and the candidate is asked to add a new feature from scratch — often without the use of AI tools. The main goal is to evaluate reasoning and problem-solving approach under realistic conditions.
Given a dictionary of services where each service has a `dur` (duration in time units) and a list of `deps` (dependency names), write a function that finds the critical path — the longest chain of dependent services — and returns its total duration together with the list of services that form the bottleneck. Example input: ```python services = { "db": { "dur": 5, "deps": [] }, "cache": { "dur": 2, "deps": [] }, "api": { "dur": 3, "deps": ["db", "cache"] }, "gateway": { "dur": 4, "deps": ["api"] } } ```
Model the service graph as a tree and apply a depth-first search (DFS). For each service, recursively compute its total completion time as its own duration plus the maximum completion time among its dependencies. While traversing, track which dependency branch produced the maximum time in order to reconstruct the bottleneck path. python def FindCriticalPath(services): time = 0 bottleNeck = [] def getTimeOfService(name, services, path): serv = services[name] duration = serv['dur'] if len(serv['deps']) == 0: return duration maxTime = 0 maxDep = '' for d in serv['deps']: tempTime = getTimeOfService(d, services, path) if tempTime > maxTime: maxTime = tempTime maxDep = d path.append(maxDep) return duration + maxTime for key in services: path = [] tempTime = getTimeOfService(key, services, path) path.append(key) if tempTime > time: time = tempTime bottleNeck = path return (time, bottleNeck) For the given example, gateway depends on api, which depends on db (5) and cache (2). The longest dependency branch through db gives 5, so api takes 3 + 5 = 8 and gateway takes 4 + 8 = 12. The critical path is ["db", "api", "gateway"] with a total duration of 12.
How are candidates evaluated on their use of AI tools during technical interviews and take-home assignments, and how should one answer related questions?
In recent technical interviews, candidates are frequently asked whether they use AI tools, which ones they use, and how they use them. The key evaluation criterion is not simply whether you use AI, but whether you use it consciously and with full understanding of the output it generates. Some take-home assignments explicitly require submitting an AI_PROCESS.md file documenting how AI was used throughout the project. A strong answer demonstrates that you leverage AI to accelerate tasks you already understand, that you review and comprehend every line of generated code, and that you do not blindly accept AI output without critical evaluation.
What types of exercises are commonly given in live coding technical interviews, and how should candidates prepare for them?
Live coding exercises tend to vary significantly between companies and interviewers — it is common to face a completely different problem in each session. Examples of exercises that have been encountered include: implementing the Fibonacci sequence, finding the shortest path to a node in a graph or tree, and string manipulation problems (e.g., given a string, count how many times a specific word can be formed from its characters). To prepare effectively, it is recommended to practice problems of medium to hard difficulty on platforms such as LeetCode or HackerRank, focus on covering edge cases, and work toward producing the most optimal solution possible.
What advice do you have for preparing for a technical interview on the HackerRank platform?
A few practical tips: (1) Have two computers available if possible, so you can reference documentation or test locally while coding on the platform. (2) Familiarize yourself with HackerRank by going through its own tutorials before the actual interview. (3) Review the most common algorithms and data-structure patterns (e.g., sorting, searching, sliding window, graphs) and practice at least a couple of medium-difficulty exercises from each category beforehand.
How do you incorporate AI tools into your development or testing workflow?
AI tools can be leveraged in several ways: (1) For repetitive tasks such as generating mocks, DTOs, test data, or boilerplate modules — process a few methods or functions at a time to keep the output easily reviewable. (2) For documentation acceleration, including design guides, PRDs, and test plans using a Spec-Driven Development approach. (3) For speeding up test generation, including unit and integration tests. (4) At a more advanced level, implementing orchestrator agents that delegate sub-tasks to specialized sub-agents. Commonly used tools include Claude and Cursor. The depth of the answer can be calibrated to whether the role explicitly requires AI skills.
During a technical HR screening, you are shown a pseudocode snippet and asked: what does this function compute, and what is its time complexity? How do you approach answering?
To identify what a function computes, trace through its logic step by step, paying attention to the operations performed on the input. For example, a function that accumulates the sum of all elements in a collection and then divides by the element count is computing the arithmetic average (mean). To determine time complexity, count how many times the core operations execute relative to the input size n. If the function visits each element exactly once in a single loop, the time complexity is O(n) — linear time — because the work grows proportionally with the size of the input.