Samsung Software Engineer Interview: From Online Test to Onboarding Complete Guide
Complete Samsung software engineer interview experience with 2 years of non-CS background. Includes 3 online test algorithm problems, technical round 1-2 real questions, personality test tips, and latest 2026 interview experience.
Background
Let me start with my background. I'm not from a CS degree — I studied Mechanical Engineering in college, then taught myself Java for about six months after graduation. I spent 2 years as a developer at a small company. The company wasn't big, and the tech stack was pretty dated — mainly Spring Boot + MySQL. Honestly, after being at a small company for a while, I started feeling anxious about my career growth. The technical progress was slow, and the salary wasn't going anywhere either.
Early this year, a friend who previously worked at Samsung as a contract developer told me that the bar wasn't as high as people think, and there were more opportunities for contract-to-permanent conversion now. He suggested I give it a try and even referred me internally. To be honest, I was a bit hesitant at first — the online reviews for contract positions were mixed — but considering my situation, I decided to go for it.
I spent about 2 months preparing, mainly grinding algorithm problems and reviewing Java fundamentals. Here's my detailed interview experience, and I hope it helps others like me who are from non-CS backgrounds trying to get into a major tech company.
Complete Interview Process Review
Step 1: Online Test (3 Algorithm Problems, 100+100+200 Points)
The Samsung online test was conducted on a coding platform, lasting 2 hours with 3 problems worth 100, 100, and 200 points respectively. The total is 400 points, and generally 150+ points gets you an interview opportunity, though requirements vary by team — I've heard some teams require 200+.
Problem 1 (100 points): String Processing
The problem asked to compress consecutive repeating characters in a string into "character+count" format, e.g., "aabbbcc" becomes "a2b3c2", and if a character appears only once, omit the number. This wasn't too difficult — I used a two-pointer approach and finished in about 10 minutes. Watch out for edge cases like empty strings and single characters.
Problem 2 (100 points): Sliding Window
Given an integer array and a target value, find the longest contiguous subarray where the difference between the maximum and minimum values doesn't exceed the target. This was clearly a sliding window problem. I used two monotonic queues to maintain the max and min in the window, achieving O(n) time complexity. All test cases passed, but it took about 30 minutes because I initially wrote the dequeue condition for the monotonic queue incorrectly and had to debug.
Problem 3 (200 points): Graph BFS
The problem involved a grid map with obstacles and teleportation portals, asking for the shortest path from start to end. Portals allow instant teleportation to another portal's location. The key insight is that during BFS, when you reach a portal, you need special handling — besides moving in four normal directions, you also add the portal's destination to the queue. I spent about 40 minutes on this and hit a bug: I forgot to handle bidirectional portals, causing some test cases to time out. Adding a visited array for deduplication fixed it.
My final score was 350 points — 100 for Problem 1, 100 for Problem 2, and 150 for Problem 3 (some test cases failed). I was a bit disappointed about not getting full marks on Problem 3, but 350 was more than enough.
Step 2: Technical Interview Round 1 (About 1 Hour)
About 1 week after passing the online test, HR contacted me to schedule the first interview. The interviewer was a guy who looked around 30, with a decent attitude. He started with a self-introduction and then dove into questions.
Java Fundamentals:
The interviewer first asked about Java's primitive data types, then about autoboxing and unboxing principles, and the Integer cache pool range (-128 to 127). I did okay on this, but I initially got the Integer cache pool range wrong — the interviewer hinted and I remembered.
Collections Framework:
Asked about HashMap's underlying implementation. I explained the JDK 1.8 structure with array + linked list + red-black tree, the resize mechanism, and why the load factor is 0.75. The interviewer followed up on the difference between HashMap and ConcurrentHashMap — I explained the evolution from segmented locks to CAS + synchronized.
Multi-threading:
Asked about thread pool core parameters. I covered corePoolSize, maximumPoolSize, keepAliveTime, workQueue, threadFactory, and rejectedExecutionHandler. Then the thread pool workflow — core threads first, then queue, then non-core threads, finally rejection policy. The interviewer also asked about the difference between synchronized and ReentrantLock — I covered reentrancy, fair locks, and interrupt responsiveness.
Coding Section:
The interviewer asked me to write a Singleton pattern. I wrote the DCL (Double-Checked Locking) version and specifically explained the role of volatile. Then came an algorithm problem — level-order traversal of a binary tree. I used BFS with a queue — not difficult, done in about 5 minutes.
Step 3: Technical Interview Round 2 (About 1 Hour)
The second round was scheduled 3 days after the first. The interviewer was more senior and asked deeper questions.
Project Deep Dive:
The interviewer asked me to detail a recent project — I described an order system refactoring experience. He followed up with many details: Why did you choose this technical solution? Did you consider alternatives? What problems did you encounter? How did you solve them? I was well-prepared for this since it was my own project, so I answered smoothly. But then he asked something I didn't expect: "If order volume grows 10x, can your system handle it?" I honestly described the bottlenecks in the current architecture and discussed potential optimization directions.
Spring Boot:
Asked about Spring Boot's auto-configuration principle. I explained the @EnableAutoConfiguration annotation and spring.factories file, along with conditional annotations like @ConditionalOnClass. The interviewer then asked about Spring Boot's startup process — I didn't answer this well, only giving a rough overview without clear details.
MySQL:
Heavy focus on indexes — B+ tree index structure, clustered vs. non-clustered indexes, covering indexes, and the leftmost prefix matching rule. Also a scenario question: "If a query is slow, how do you troubleshoot?" I explained using EXPLAIN to check the execution plan, analyzing whether it hit an index and how many rows were scanned.
Redis:
Asked about common Redis data structures and their use cases. I covered String for caching, Hash for objects, Set for tags, ZSet for leaderboards, and List for message queues. The interviewer followed up on the difference between RDB and AOF persistence, and Redis's expiration deletion and memory eviction strategies.
Step 4: Personality Test
After passing the technical interviews, I received a personality test link. The test has about 200+ questions, mainly assessing whether your personality fits the company culture. Many people online say the personality test can reject you, so take it seriously.
My advice: Be consistent throughout. The test has many repeated questions phrased differently — contradictory answers will flag you as dishonest. Choose positive, proactive options. For example, when facing difficulties, choose "find ways to solve it" over "seek help"; for teamwork, choose "take initiative" over "follow instructions." Also, avoid extreme options — stay moderate but positive.
Result
The first interview was scheduled 1 week after the online test, the second round 3 days after the first, and I received the offer 4 days after the second round. The entire process took about 2+ weeks, which was pretty fast. The final salary was about 40% higher than what I made at the small company. While the contract position still differs from a permanent role, it was a significant improvement for me.
Real Interview Questions Summary
Online Test Questions:
1. String compression: Compress consecutive repeating characters into "character+count" format
2. Sliding window: Longest contiguous subarray where max-min difference doesn't exceed target
3. Graph BFS: Grid map with obstacles and portals, find shortest path
Technical Round 1 Questions:
1. Java primitive data types and autoboxing/unboxing
2. Integer cache pool range
3. HashMap underlying implementation and resize mechanism
4. HashMap vs. ConcurrentHashMap differences
5. Thread pool core parameters and workflow
6. synchronized vs. ReentrantLock differences
7. Write DCL Singleton pattern
8. Algorithm: Binary tree level-order traversal
Technical Round 2 Questions:
1. Project deep dive: Technical solution selection and system scalability
2. Spring Boot auto-configuration principle
3. MySQL B+ tree index structure
4. Clustered vs. non-clustered index differences
5. Covering index and leftmost prefix matching
6. Slow query troubleshooting methods
7. Redis data structures and use cases
8. Redis persistence: RDB vs. AOF
Takeaways and Advice
1. The online test is your ticket in — prepare thoroughly. The difficulty isn't extremely high, but don't take it lightly. I recommend at least 50 LeetCode medium problems, focusing on strings, arrays, sliding windows, and BFS/DFS. Higher scores give you more team choices later.
2. Java fundamentals must be solid. Round 1 mainly tests fundamentals — HashMap, thread pools, and concurrency are almost guaranteed. Don't just memorize — truly understand the principles, because interviewers will probe for details.
3. Be able to explain your project experience clearly. Round 2 digs deep into projects. Organize your past projects beforehand and think through the reasoning behind each technical decision. Interviewers care more about why you chose a technology than what technology you used.
4. Don't underestimate the personality test. I know someone who passed the technical rounds but failed the personality test. Remember two principles: be consistent and be positive.
5. Don't feel inferior about being non-CS. Interviewers don't really care about your major — they care about your ability and learning attitude. I proactively mentioned my non-CS background, and the interviewer actually saw self-learning ability as an advantage.
FAQ
Q: What's the difference between contract and permanent positions?
A: Contract positions are through staffing agencies, not directly with the company. The salary and benefits are lower than permanent roles. However, conversion opportunities do exist — typically 1-2 years with good performance.
Q: What online test score do you need to pass?
A: Generally 150+ points gets you an interview, but popular teams may require 200+. I'd recommend aiming for 250+ for more options.
Q: Can non-CS candidates pass the interview?
A: Absolutely. The requirements for degree and major are relatively flexible — actual coding ability matters more. I'm non-CS myself, scored 350 on the online test, and passed the interviews smoothly.
Q: Can the personality test reject you?
A: Yes. If you fail, you can usually retake it, but it's best to pass the first time. The key is consistency and positivity — avoid extreme options.
Q: Is the workload intense?
A: It depends on the team — some have more overtime, others are relatively relaxed. Overall, the work content and intensity are similar to permanent employees. But the salary is relatively lower, so be prepared for that.