⏱ 0:01est. 21 min
Shopify Research
```
1) Given a string and a dictionary of words, determine if the string is valid based on all dictionary words.
// Test cases
string = "Practice makes perfect"
dictionary = ["practice", "perfect", "makes"]
assert valid_sentence(string, dictionary) == True
string = "Practice makes perfect"
dictionary = ["practice", "perfect"]
assert valid_sentence(string, dictionary) == Frue
2) Determine if the given string contains valid words while ignoring extraneous characters
string = "practicemakesperfect"
dictionary = ["practice", "perfect", "makes"]
assert valid_sentence(string, dictionary) == True
string = "practicemakesperfectx"
dictionary = ["practice", "perfect", "makes"]
assert valid_sentence(string, dictionary) == False
string = "makesperfectxpractice"
dictionary = ["practice", "perfect", "makes"]
assert valid_sentence(string, dictionary) == False
string = "makesperfectxpractice"
dictionary = ["practice", "perfect", "makes", "xp"]
assert valid_sentence(string, dictionary) == False
string = "makesperfectxppractice"
dictionary = ["practice", "perfect", "makes", "xp"]
assert valid_sentence(string, dictionary) == True
- Binary Search Tree
- Linked List
- Heap/HashTables
- Grind through leetcode (70-80) [100 is pretty ok, give 25min to think and 40-45 to solve, and then look into solution]
- https://www.youtube.com/watch?v=D35llNtkCps&list=PLm6XThSMgu_FHBBDnWKj8E2PNocdMw_yD&ab_channel=interviewing.io
// https://www.onlineinterviewquestions.com/shopify-interview-questions/
```
// https://interviewing.io/recordings/Ruby-Shopify-1/
Design robot movement in 2d space
-------------------------
1) My previous roles and responsibilities
2) Why Shopify and
3) Explain my recent project and the tech stack.
-------------------------
Screening: very basic Map/String/numbers operation.
Life story round:
How did you get into Software Engineering? What did you study at university/school? What prompted you to pursue this?
I was also asked about my earlier years, i.e. what was it like growing up etc. Don't be offended by this, it's not necessarily them trying to probe you, more like a "white glove service" thing. If you would not like to talk about it, talk about something else and quickly skip over this.
-------------------------
It was about sort list of products
-------------------------
1 hour 'life story' call
Why did you change job? Why did you choose this project? why why why?
Explain to me in details about one of your recent project
-------------------------
- Initial phone call, information about the position
- Small technical test, Google meet call with Senior Engineer. This was an algorithm test more on the easy category on leetcode.
- on-site interview day - 3 interviews plus lunch
1st Interview - Algorithm test applied
2nd Systems design interview with hiring manager
Lunch With a team member
3rd Algorithm test
Looking back how would you do things differently in X project?
-------------------------
I applied at Shopify for Senior Software Engineer role. After being shortlisted I got an initial call from HR in July 2019. The complete process is divided into 5 rounds.
1. Life Story Round - This is more like a behavior round where they ask you to tell the story of yourself mentioning how and why you came to engineering. They try to test your communication skills and dig into your motivation for being an engineer. The round takes like 1 hr.
2. Technical Screening - I had a back to back life story followed technical screening round. This round will demand you to code a straight forward code where the interviewer will observe how you code. This is to make sure that you know how to code before they start the real interview.
3. Technical Discussion - This is a one-hour discussion with an engineer where you discuss your current project and elaborate at least one of a problem which you solved end to end. The problem doesn't need to be very complex but you are supposed to go in detail when explaining the solution.
4. Pair Programming Interview 1 - It's a standard pair programming test where a problem will be given and you are supposed to code it end to end. The problem will not be very difficult and will not be requiring any kind of complex usage of Data structures.
5. Pair Programming Interview 2- Same as above.
The overall interview process was very fast and clean. I didn't get the offer in the last but I had a good interview experience. The overall expectation is quite high and you are supposed to think about TDD and perform clean code following SOLID principles in both of the pair programming rounds.
Tips to prepare for the interview
1. No need to stress yourself for complex data structures and algorithms
2. You are allowed to use the internet and check any documentation as no one can remember the syntax completely.
3. Make sure you focus a lot of TDD. I think every interviewer expects that you share some set of extensive test cases/path before writing the code.
4. Don't forget to tell them in detail why are you making each class and method. I tried to explain while coding but in the feedback, I was not vocal enough.
Interview Questions
Tell me how you came to engineering?
-------------------------
Why Shopify?
Past project details.
Pair programming included a URL shortener problem and the other code refactoring.
-------------------------
Tell you life story.. tell us how you ended up where you are now.
-------------------------
Basic process was:
* Stage 1: Email
* Stage 2: 30 min call with recruiter to discuss what I current do and why I'm interested in shopify
* Stage 3: 60 min skype call with recruiter to do the life story
* Stage 4: 60 min skype call with director to discuss the role, my background, etc.
* Stage 5: full day interview at their Toronto office:
** pair programming (pick 1 of 3 options to work on i.e. code Sudoku)
** skype call with Product Manager
** Lunch with potential team member
** pair programming (pick 1 of 3 options i.e. code four in a row)
** skype call with director
----------------------------
I've applied online, as thought my experience was relevant to what they seek (opensource projects, highload projects, platform design and implementation, passion to a technology with proofs in opensource contributions etc.).
----------------------------
The test was about an algorithmic that need it to be sorted according to a piece of data with only strings.
----------------------------
What is growth to you?
----------------------------
Tell me about a technical/coding project you are proud of
-----------------------------
What do you enjoy coding?
-----------------------------
What's the most interesting project you've undertaken and what's interesting about it?
-----------------------------
I spoke with a recruiter for 1 hour and then chatted with a couple of front end devs for another hour. The next day I was contacted to come back in the following week for a 3-4 hour interview - technical life story (1 hour), problem solving (1 hour), pair programming (1.5ish hours). Was never was asked for a resume or references.
Interview Questions
- How did you get into web development?
- How would you build a shopping cart?
-------------------------------
1. Show a previous example of work that I was proud of
-------------------------------
I spent an hour with a recruiter talking about my "life story", where I was asked about how I became interested in technology, my career so far, etc. The second interview was an in depth technical discussion with a developer about projects I've worked on. I also got the chance to learn about their technology stack.
"How did you get into technology?"
-------------------------------
Describe a situation where you were challenged and how did you overcome it
-------------------------------
Shopify life story interview
- We seek people with a growth mindset (in contrast with a fixed mindset).
- Life story is where we want to know more about people while we look for pivotal moments of personal or professional growth in their lives.
- You could talk about times where a challenge or obstacle came in your way, and you made the necessary adjustments to make the most out of that situation or escape from a blocker.
- Be authentic, talk about what your passions are and what you care about. If you want to keep your personal life private, it's also okay, just talk about your professional life and what really motivated you to become the professional you are today.
-------------------------------
What is the purpose of promises in JS
To sort an array is theorically easy but I didn't know if I could use php's sort() function (I should have made this question).
So I tried the create a bubble sort and selection sort but I was too nervous to manage doing it.
Difference between objects in Java and JS
Check nested strings following this examples: (intermediate).
'{}' -> is nested
'{{}}' -> is nested
'{}{}' -> is nested
'{}}{' -> not nested
'}{{}' -> not nested
'{{{}}}' -> is nested
int i =0;
increment i by 1 each time you encounter {
decrement i by 1 each time you encounter }
The moment i goes < 0, you know it is not nested.
https://www.geeksforgeeks.org/how-to-sort-strings-in-javascript/
Cubiks test
https://jigarius.com/blog/shopify-software-developer-interview
Sort a list of strings using java comparator class.
Just a slightly more complicated version of finding certain characters in a string
There are some sets of strings that map to an item - Given a string, determined the number of items
general string manipulation, arrays, etc.
classic system design questions
array of strings "productName, PopularityScoreAsaStringOutOf100, and priceIntegerAsaString" how would you rank the items by popularity. If there is a tie with pop score, place the cheaper priced item first.
I was asked to build a URL Shortener in 1hr
you are given a list of sorted words as they would appear in a dictionary, but the language is 'alien' to you. Using the words, create a list that shows the order of occurrence of letters in that language's 'alphabet' sequence.
Given a list of items and quantities, apply discount rules and determine the cart's checkout value.
Print certain geometrical shapes on the screen.
Implement a sorting algorithm to manipulate strings
Solve a String permutation algorithm problem;
how to handle the growth of databases after 1M records.
how most relations got translated to SQL
Given a string buffer, implement search and replace.
Sliding Window string: https://leetcode.com/list/5251jjoi
- Sliding Window Array: https://leetcode.com/list/525s72fh
- Two pointer: https://leetcode.com/list/525ygdf1
- Array: https://leetcode.com/list/5pl35lnt
- String: https://leetcode.com/list/5pl39d2r
- Recursion and Backtracking: https://leetcode.com/list/5vu5k3si
- DP: https://leetcode.com/list/5pl3pf9m
- Linkedlist: https://leetcode.com/list/5pl3enms
- Stack and Queue: https://leetcode.com/list/5pllsqsc
- Tree: https://leetcode.com/list/5pl3p5e3
- Graph: https://leetcode.com/list/5rkyjywe
- Hashtable: https://leetcode.com/list/523mifh7 (to select more)
- Heap: https://leetcode.com/list/523m7me3
- Design: https://leetcode.com/list/523mlo9m
- Greedy: https://leetcode.com/list/5ma3r15s
- Other: https://leetcode.com/list/52qey8bs
- Trie: https://leetcode.com/list/523mb3dm
https://interviewing.io/recordings/Ruby-Shopify-1/
--------------------------------------------------------------------
// https://ca.linkedin.com/in/nayeemzen
Courses on linkedin for Staff Software Engineer
University of Toronto
Advanced Engineering Mathematics
MAT290
Algorithms and Data Structures
ECE345
Calculus A
MAT196
Calculus B
MAT197
Calculus III
MAT291
Circuit Analysis
ECE212
Communication and Design
ECE297
Computer Fundamentals
APS105
Computer Networks
ECE361
Computer Organization
ECE243
Digital Systems
ECE241
Electric and Magnetic Fields
ECE221
Electrical Fundamentals
ECE110
Engineering Strategies and Practices
APS111
Engineering Strategies and Practices II
APS112
Intro to Materials and Chemistry
APS104
Linear Algebra
MAT188
Mechanics: Dynamics
MIE100
Mechanics: Statics
CIV100
Microelectronic Circuits
ECE231
Operating Systems
ECE344
Probability and Random Processes
ECE302
Programming Fundamentals
ECE244
Signals and Systems
ECE216
---------------------------------------------------------
https://ca.linkedin.com/in/jacksonhong
Courses on linkedin for Staff Software Engineer
University of Toronto
Courses
Algorithm Design and Analysis
CSC 373
Computer Organization
CSC 258
Computers and Society
CSC 300
Data Structure and Analysis
CSC 263
Intro to Computer Programming
CSC 108
Intro to Computer Science
CSC 148
Intro to Databases
CSC 343
Intro to Software Engineering
CSC 301
Intro to Theory of Computation
CSC 236
Introduction to Artificial Intelligence
CSC 384
Mathematical Expression and Reasoning for Computer Science
CSC 165
Numerical Methods
CSC 336
Operating Systems
CSC 369
Programming Languages
CSC 324
Programming on the Web
CSC 309
Software Design
CSC 207
Software Tools and System Programming
CSC 209
The Design of Interactive Computational Media
CSC 318
https://ca.linkedin.com/school/university-of-alberta/?trk=public_profile_school_result-card_full-click
University of Alberta
University of Toronto
University of Waterloo
Carleton University
University of Waterloo
University of Toronto
Hofstra University
Queen's University
Master's DegreeComputer Science4.15/4.3 GPA
2013 - 2014
http://hammad.ca/projects/
Bachelor of Computer ScienceScience12.0/12.0 GPA
Courses
Artificial Intelligence
COMP 4106
Design And Analysis of Algorithms II
COMP 4804
Evolutionary Computing and Artificial Life
COMP 5206
Principles and Practice of Distributed Programming
COMP 4104
Programming for Clusters and Multi-Core Processors
COMP 4009
https://github.com/Shopify/ghostferry
https://github.com/Shopify/liquid-c
http://frustra.org/strayphotons
https://shop.app/
Cornell University