100 karma · joined April 8, 2019
Feedback to interviewer. ========================
The interviewer was knowledgeable, smart but is unhelpful in guiding towards answers. I had started on correct path of using two pointers. When I got stuck, he expected me to resolve it myself. You can view it in two ways. Either he expects interviewee to solve end to end,(Employees must perform tasks on their own so we should not help). or we expect rockstar candidates who don't need any help. Depending on your company's reputation in market place, you need to decide what path you will take. Otherwise, you will be interviewing many many candidates before finding one you like(not one who can do the work). Also, There was no reason to make me compile the whole code. I had adequately demonstrated that I can write Java syntax(or that I cannot write Java syntax, depending on your expectations). When I write an algorithm or code and you want to test it in a interview setting, you must walk the code with me and evaluate a few cases. Or ask me to walk through the code with a few test cases. Its just a travesty if you expect me to use the "run" button. That just introduces additional complexity where I have to write absolutely correct syntax. In a real world job setting, I would have IDE support which shows compile errors as we type. There it is easy to complete compilable code in less amount of time.
Their feedback to me. =====================
The candidate had some ideas in the right direction, yet it appeared challenging to conceptualize an acceptable solution and implement end to end. The candidate understands CS fundamentals and I certainly see potential in the candidate. To continue practicing, the candidate can continue working with these algorithmic patterns: DFS/BFS greedy sliding window divide and conquer recursion dynamic programming. A popular site to practice algorithms is leetcode.com. To ensure practice conditions close to the interview setting, I encourage 1. Code in a notepad 2. Setup a timer 3. Talk during a practice 4. Create some psychological pressure, e.g. ask somebody to watch you during practice, record yourself on a video, etc.
Its just the way capitalism works.
I do trees, hash tables fairly well. When it comes to arrays, I usually do well when brute force takes O(N) but optimal solution is O(logN). I do badly when brute force is O(N2) but optimal is O(N). Even in interview, I know I should look for O(N) solution, I do get the general solution right but I fail to get the specifics wrong. For example, most O(N2) solutions include two for loops. You tend to redo a lot of work if you run two loops. But figuring out a subset of indices which do not need to be computed, one must come up with a O(N) solution. This somehow, I fail, consistently.
Graphs are a hit or miss. I do dynamic programming well most of the times.
>>What kind of programming do you do?
I work on a major mail provider's middleware team. I write Java web services code in a distributed environment. My service talks to storage system, notification system etc. Most of the work involves designing and implementing algos for rate limiting, for fetching and caching data from storage system etc. Work also involves scaling to involve increased load etc.Day to day work is all Java. Write REST API code +unit tests + integration tests and then deploy. Worked on compiler frontends before(C/C++).
>>Where are you located? SF Bay area. But I am looking coach from anywhere in the world! Email in Profile.
I agree with your assessment of entire industry being born overnight. But given that just passing these tests gives $100K+ bump in salary, I think its kind of expected.
Now all we need is a good dev environment on smartphone for backend coding.
This is good for practice. Was on HN two days ago.
Also, can you please enable email based signup. Just because I use your site should not mean I have to except Google/twitter/github privacy policy, spectrum sign up policy and what not. I want to work in the relative anonymity of the internet, not show my picture in random places.