File size: 3,472 Bytes
404deeb
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[
  {
    "user": "Write a Python function to merge overlapping intervals. Example: [[1,3],[2,6],[8,10],[15,18]] -> [[1,6],[8,10],[15,18]]",
    "assistant": "```python\nfrom typing import List\n\ndef merge_intervals(intervals: List[List[int]]) -> List[List[int]]:\n    if not intervals:\n        return []\n    \n    intervals.sort(key=lambda x: x[0])\n    merged = [intervals[0]]\n    \n    for start, end in intervals[1:]:\n        last_end = merged[-1][1]\n        if start <= last_end:\n            merged[-1][1] = max(last_end, end)\n        else:\n            merged.append([start, end])\n    \n    return merged\n```\n\n**Complexity**: O(n log n) time (sorting), O(n) space for output.\n\n**Edge cases handled**: Empty input, single interval, intervals fully contained within others."
  },
  {
    "user": "Write a SQL query to find the top 3 departments by average salary, showing department name and average salary, only for departments with more than 5 employees.",
    "assistant": "```sql\nSELECT \n    d.name AS department_name,\n    AVG(e.salary) AS avg_salary\nFROM departments d\nJOIN employees e ON d.id = e.department_id\nGROUP BY d.id, d.name\nHAVING COUNT(e.id) > 5\nORDER BY avg_salary DESC\nLIMIT 3;\n```\n\n**Alternative** (for ties / dense rank):\n```sql\nWITH dept_stats AS (\n    SELECT \n        d.name,\n        AVG(e.salary) AS avg_salary,\n        COUNT(e.id) AS emp_count\n    FROM departments d\n    JOIN employees e ON d.id = e.department_id\n    GROUP BY d.id, d.name\n    HAVING COUNT(e.id) > 5\n)\nSELECT name, avg_salary\nFROM dept_stats\nORDER BY avg_salary DESC\nLIMIT 3;\n```"
  },
  {
    "user": "What's the difference between TCP and UDP? When would you use each?",
    "assistant": "## TCP vs UDP\n\n| Feature | TCP | UDP |\n|---------|-----|-----|\n| Connection | Connection-oriented (handshake) | Connectionless |\n| Reliability | Guaranteed delivery, retransmission | Best-effort, no guarantee |\n| Ordering | Preserves order | No ordering guarantee |\n| Speed | Higher overhead, slower | Lower overhead, faster |\n| Use cases | Web (HTTP), email (SMTP), file transfer (FTP) | Streaming, gaming, DNS, VoIP |\n\n**When to use TCP**: When data integrity and order matter more than latency \u2014 file transfers, web pages, database queries, email.\n\n**When to use UDP**: When speed matters more than perfect delivery \u2014 real-time video/audio, online gaming, DNS lookups, live streaming. Each lost packet is less noticeable than the delay from retransmission."
  },
  {
    "user": "Explain the time complexity of accessing, searching, inserting, and deleting in a hash table.",
    "assistant": "## Hash Table Complexity\n\n| Operation | Average | Worst Case |\n|-----------|---------|------------|\n| Access | O(1) | O(n) |\n| Search | O(1) | O(n) |\n| Insert | O(1) | O(n) |\n| Delete | O(1) | O(n) |\n\n**Why O(1) average**: A good hash function distributes keys uniformly across buckets. The hash function computes the bucket index in constant time, and with a good load factor (typically < 0.75), there's at most a small constant number of keys per bucket.\n\n**Why O(n) worst case**: If many keys collide at the same bucket (e.g., poor hash function or malicious input), all operations degrade to linear search through the bucket chain or probing sequence.\n\n**Real-world note**: Amortized insertion remains O(1) because resize operations (when load factor is exceeded) happen infrequently."
  }
]