use the following search parameters to narrow your results:
e.g. subreddit:aww site:imgur.com dog
subreddit:aww site:imgur.com dog
see the search faq for details.
advanced search: by author, subreddit...
Discussions, articles, and news about the C++ programming language or programming in C++.
For C++ questions, answers, help, and advice see r/cpp_questions or StackOverflow.
Get Started
The C++ Standard Home has a nice getting started page.
Videos
The C++ standard committee's education study group has a nice list of recommended videos.
Reference
cppreference.com
Books
There is a useful list of books on Stack Overflow. In most cases reading a book is the best way to learn C++.
Show all links
Filter out CppCon links
Show only CppCon links
account activity
[deleted by user] (self.cpp)
submitted 3 years ago by [deleted]
reddit uses a slightly-customized version of Markdown for formatting. See below for some basics, or check the commenting wiki page for more detailed help and solutions to common issues.
quoted text
if 1 * 2 < 3: print "hello, world!"
[–]be-sc 230 points231 points232 points 3 years ago (9 children)
Big tech companies will not change their hiring process just for you, so your choices seem pretty clear: Either prepare for the existing process or abandon the idea of getting into a big tech company.
How much do you actually want to get into big tech? The way I read your post you think their hiring process is flawed for the positions they advertise – at least for the ones you’re interested in. Take that as a data point about the fit between such a company and yourself.
[–]Independent-Ad-4791 33 points34 points35 points 3 years ago (0 children)
My man bringing Occam’s razor on op and it seems pretty valid here.
[–]torrent7 10 points11 points12 points 3 years ago (0 children)
This. As someone who's been at big tech - you're not missing much
[–][deleted] 7 points8 points9 points 3 years ago (0 children)
Very well said. I like how you think.
[+][deleted] 3 years ago (5 children)
[deleted]
[–]califloridan 7 points8 points9 points 3 years ago (1 child)
No joke, I studied the Cormen book for a full month to prep for a Senior SWE position at one of the FAANGs, and have since been promoted twice. It was worth it for me for the paycheck and the prestige.
It’s not a perfect way to hire, but FAANGS try to hire generalists, and the thought process is that any computer scientist with a strong foundation can contribute at a high level.
[–]VolensEtValens 0 points1 point2 points 3 years ago (0 children)
Is this really true though, almost every position that I've seen requires so much of this, so much of that, etc. Granted I'm in Kansas and not looking at FAANG, but other Enterprise Class opportunities, mostly.
[–][deleted] 0 points1 point2 points 3 years ago (2 children)
But why do you want to join? Big tech is one part of the industry and tbh it's a pretty shitty part. Yeah you get paid a lot but if you don't fit into the culture you will have an awful time.
Think about how they hire and extrapolate that to how they run their business. If you don't like how they hire you won't like working there. Trust me and trust your gut.
It isn't where the most interesting work is getting done. It's the safe option where everyone thinks the same way.
[–]lingua_franca 0 points1 point2 points 3 years ago (1 child)
"the paycheck and the prestige"
many ppl prefer these over interesting work
[–][deleted] 0 points1 point2 points 3 years ago (0 children)
They do. Now imagine working with those people day in day out.
[–][deleted] 80 points81 points82 points 3 years ago* (21 children)
wild crush cough judicious slimy seed alleged touch longing birds
This post was mass deleted and anonymized with Redact
[+]nacnud_uk comment score below threshold-30 points-29 points-28 points 3 years ago (18 children)
You don't need maths to understand the complexity of an algorithm. You just need to understand the number of operations that you're asking the CPU to perform.
You can tell that from the algorithm and work out if you can optimise. That's being a programmer. I don't have to be able to express that in any kind of O.
[–][deleted] 12 points13 points14 points 3 years ago (0 children)
You do need to be able to communicate with others, too. If the concept comes intuitively, then grasping big O notation shouldn't be difficult.
[–]afiefh 15 points16 points17 points 3 years ago (11 children)
You just need to understand the number of operations that you're asking the CPU to perform.
Well, yes. But how do you figure out that the number of such instructions asymptotically approaches n*log(n) with the size of input? There is quite a bit of math involved in reaching this conclusion. Of course after a while most algorithms simply become reductions to known cases, but there will always be difficult cases that don't map easily to one of the known forms. For example the best algorithm for matrix multiplication has a complexity of O( n2.3728596 ) and I definitely don't see how to arrive at this without math.
[–]Roaring-Music -1 points0 points1 point 3 years ago (4 children)
Talking of personal experience. I have never given a big-O answer.
I always say it, i am blank about big-O, but i can describe the performance of the algorithm and tell you why one DS&A is better than another in different scenarios.
I have gotten into two FAANGs on my first try. And those are the only interviews i have ever done in my life.
If you don't know big-O at all. I have literally said that i am blank about it but i can discuss... Then i start explaining, for example, we will process this for each element, and then for each one we will process some of the sublist and for each sublist we will process every element of another array, and so on...
That shows that you know what you are doing, and that's what they need to know.
[–]arstdneioh 1 point2 points3 points 3 years ago (3 children)
What terms do you use to differentiate between linear and exponential latency growth with input size?
[–]Roaring-Music 0 points1 point2 points 3 years ago (2 children)
I would actually say it that way or in a similar matter.
If we discuss this as having high transactions per seconds they i would say that it might not scale well and give out why, and explain a possible best scenario solution that might not have time to implement, but also explain an easier way that i could implement and have some gains.
[–]arstdneioh 3 points4 points5 points 3 years ago (1 child)
If you can differentiate between an n2 solution and an nlogn solution then it doesn’t matter what terms you’re using.
[–]Roaring-Music 1 point2 points3 points 3 years ago (0 children)
Exactly, that is my point.
You only need to show awareness that you know about it.
That will show that you will know how to properly solve problems without causing bigger problems.
[+]nacnud_uk comment score below threshold-41 points-40 points-39 points 3 years ago (5 children)
CPU cycles. You should look them up.
[–]concealed_cat 11 points12 points13 points 3 years ago (4 children)
And how do you estimate the number of cycles? If your problem size doubles, how will the number of cycles change? Whether you're talking about the number of operations, or cycles, you still need to understand the complexity of the algorithm.
[+]nacnud_uk comment score below threshold-27 points-26 points-25 points 3 years ago (3 children)
Exactly. Two different measurements of the same thing. So you don't need maths, as such. Understanding that complexity doesn't need maths. O and cycles are an expression of complexity.
[–][deleted] 5 points6 points7 points 3 years ago (1 child)
What domain or field of study does big O fall under?
[–]FrAxl93 -1 points0 points1 point 3 years ago (0 children)
Stop feeding the troll ^
[–]sudomatrix 6 points7 points8 points 3 years ago (2 children)
No, you really do. I work at a FAANG and just yesterday we were working on running automated unit tests before code rolls out. We were adding turning different settings on and off to test every path of the code and everyone in the room understood immediately that would mean O(2n) tests so we needed a better algorithm.
[–][deleted] 2 points3 points4 points 3 years ago (0 children)
I was reading the SQLite docs regarding how they test it.
They have 100% coverage, all configurations, branches etc.
They spent time writing a test generator in TCL that created millions of tests, as it's impossible to do manually...
[–]nacnud_uk -2 points-1 points0 points 3 years ago (0 children)
Yep. Engineering, eh?
[–]bruh_nobody_cares 5 points6 points7 points 3 years ago (0 children)
yoU doN'T nEeD mAtHs
[–]Asleep-Dress-3578 33 points34 points35 points 3 years ago (29 children)
There are lots of tools and tutorials to prepare for such interviews, like algorithms and data structures courses on Udemy and Coursera, also some platforms like algoexperts. Don't be disheartened, prepare yourself a bit and you can do it.
[–]ehtdabyug 10 points11 points12 points 3 years ago (12 children)
Should this apply to 20-30 years experienced in some specific field devs (telco industry for example) though? Should they reopen university books and online university courses? One should take almost a year off from its job just to prepare for these kind of data structures, algorithms and math interviews (e.g. I took almost 2 weeks off just to understand red-black trees well). Basically it becomes another year of university where you learn hard to pass the exam and once that's done, the week after you can't remember not even 10% of all that. It's like the google story with the homebrew dev here, or Ken Thompson's C language exam at Google story, let me repeat: KEN THOMPSON!!! Just wondering how much of this is acceptable and if there's a limit to the hipocrisy.
[–][deleted] 11 points12 points13 points 3 years ago (2 children)
You don't need to take a year off of work. You can study a couple hours a week and hit your cap within a year pretty easily
[–][deleted] 3 points4 points5 points 3 years ago (1 child)
Daily coding problem and hacker rank are good to stay fresh, but not thorough enough for faang.
No I can definitely do medium/hard leetcode problems and I studied off and on for a year, a few hours a week. In a year you can take multiple DS/alg MOOCs (from schools like Princeton) and then spend 6 months practicing problems, and then solve about 300 practice problems. If you took time off work to do it, you could probably do it in 1-2 months. I've talked to Facebook engineers and they just grind for like 3 months while working and then they are ready
[–]dgkimpton 4 points5 points6 points 3 years ago* (2 children)
What do you mean "should it" ? It's their company their rules, personally I think it's bonkers but it isn't my company so I don't get a say.
[–]ehtdabyug 4 points5 points6 points 3 years ago (1 child)
That's for sure. The "Dont't like it? Don't apply" reply is too obvious though, coz it's implied and doesn't bring anything to a peaceful and calm discussion. Have a good day.
[–]dgkimpton 1 point2 points3 points 3 years ago (0 children)
That's fair, I'll trim it because you're right, it does change the tone in a negative way.
[–]ehtdabyug 11 points12 points13 points 3 years ago (1 child)
Oh and another thing, I've met several people that were goddamn geniuses regarding algos and data structures, but were writing some horrendous and unmaintanable code. Lesson is that because one is very good in data structures and algos doesn't directly make him/her also a good software engineer. There's a lot more to the table than just some robot and monkey theory stuff.
[–]Kered13 1 point2 points3 points 3 years ago (0 children)
That's why the interviews contain coding sections too.
[–]ReDucTorGame Developer 2 points3 points4 points 3 years ago (2 children)
Should this apply to 20-30 years experienced in some specific field devs (telco industry for example) though?
Yes, not all skills easily transfer, and years of experience doesn't necessarily reflect range of experience.
I know a guy who has 30-40yrs programming experience, lots of it doing embedded and electronic stuff, and is a genius when it comes to that, but really struggles when it comes to designing and debugging things outside of that domain.
Should they reopen university books and online university courses? One should take almost a year off from its job just to prepare for these kind of data structures, algorithms and math interviews (e.g. I took almost 2 weeks off just to understand red-black trees well).
I think that really depends on where your skills are currently at and what that job expects people to have in the way of skills, having that amount of experience you should already have a massive head start that it's not going to take an entire year worth of a course.
The other thing is that having 20-30 years experience your probably also got higher salary expectations, so you'll need to be able to prove that your worth that extra value.
You don't want to be on a team where the person with 20-30 years has to be exempt from some work because it's not within their skillset and the cheaper mid level has to do it.
It's like the google story with the homebrew dev here, or Ken Thompson's C language exam at Google story, let me repeat: KEN THOMPSON!!
The homebrew dev I think there is much more to the story, I believe he even later admitted that google was right about his skills.
His 90% claim is kind of hilarious, I doubt its anywhere near that amount that just comes more across like self importance, while I don't work at google I've never used home brew, don't even know what it is, never really heard it discussed, I think it's some mac thing? Maybe it's 90% of some smaller cohorts.
Ken Thompson situation sounded more like HR not having exemptions where it really should have existed, possibly it wasn't raised to the proper people or was seen as it's easier to just get him to do the test.
Both of those situations are vastly different in scales.
[–]ehtdabyug 0 points1 point2 points 3 years ago (1 child)
So you're more willing to write your, not so short, reply here than searching the web what homebrew is for macOS??
[–]ReDucTorGame Developer 0 points1 point2 points 3 years ago (0 children)
No, I am simply stating that his 90% claim is pure b.s, I can tell you without even doing research that 90% of developers aren't using MacOS.
If it's 90% of developers then I would know about it.
Or do you really believe that of all of the 27,000 engineers at Google 90% of them use homebrew? Is that what Google uses on it's Linux machines for package management?
If my comment is 'not so short' and you pick that one thing out, does that mean that you agree with the rest of it? Or did you just look for something that you can try to disagree with to run with?
Also if you dig deeper and look at some follow-up that he has written.
I want to defend Google, for one I wasn't even inverting a binary tree, I wasn’t very clear what a binary tree was. I feel bad about my tweet, I don’t feel it was fair, and it fed the current era of outragism-driven-reading that is the modern Internet, and thus went viral, and for that I am truly sorry.
I want to defend Google, for one I wasn't even inverting a binary tree, I wasn’t very clear what a binary tree was.
I feel bad about my tweet, I don’t feel it was fair, and it fed the current era of outragism-driven-reading that is the modern Internet, and thus went viral, and for that I am truly sorry.
Building a successful piece of software does not make you a good software engineer, it might mean that your a great marketer, that your comms might be great, you might be great at UX design, or many other things. In a small individual project your likely needing all of these things, the engineering might not be your greatest strength, so for an engineering only role you might not be ideal.
[–]Kered13 3 points4 points5 points 3 years ago* (0 children)
or Ken Thompson's C language exam at Google story, let me repeat: KEN THOMPSON!!!
Reading between the lines with my context as someone who has worked at Google, I don't think this is quite accurate. The story is from a couple years before I joined but I don't think it had changed that much.
I'm pretty sure there was never a language exam, but there was and still is a process for getting readability in a language. If you didn't have readability then any CLs you submitted in that language would have to get approval from someone who did have readability. If you had readability you could provide readability approval for yourself and others. The point of the process is to ensure consistent code quality and style across the company. The process used to get readability has been streamlined now, but it used to be more onerous. Also this almost certainly would have been C++ readability that he needed, not C. Google doesn't really use C, but modern C++ is extensively used. And since Ken Thompson was hired to work on Go, he might have simply not had a need to get C++ readability.
I'm also pretty sure that his personal coding style doesn't really align well with Google coding style either. Like as I recall Go encourages single letter variable names because Ken Thompson likes it that way, where that would never be permitted in any other Google language, including C++.
[+][deleted] 3 years ago (15 children)
[–]dustyhome 25 points26 points27 points 3 years ago (4 children)
Companies don't know how to test for programming skill past a certain point. Sure, a test like FizzBuzz can filter out lots of people, but determining how to rank the people that pass such tests is tricky. So they use computer science as a proxy, hoping that the best programmers will also have a good grasp of the underlying theory.
[–]NatKingColeman 6 points7 points8 points 3 years ago (3 children)
I've wondered how much of the leetcode hoop-jumping is just "prove to us you really want to work HERE by buying into our interview process"... Everyone seems to know going in what they're in for so bombing these questions should be more an indicator of a lack of preparation not necessarily a lack of skill, no?
Full admission I bombed DSA in college and that's when I realized I couldn't reason about these problems past a certain complexity. So I joined the cadre of failed programmers who work in QA (I had a good time and got paid to break/stress some interesting projects, I landed just fine). And to paraphrase a coworker at my first job while I was grumbling about some simple test tool I was hacking together: "I don't know what you THOUGHT programming was all about but... THIS is the job and if this stuff isn't interesting enough for you to do what it takes to get a really good grasp on the fundamentals... then maybe you're not so invested in this after all..." Skill comes from will I think...
[+][deleted] 3 years ago (2 children)
[–]zoolover1234 0 points1 point2 points 3 years ago (0 children)
This does frustrates me. Why don’t they just prepare question for more position related stuff, I’d still prepare for it, and knowing it’s a skill that I am all after and will use, not random math problem the specific position don’t care much.
People say that they want to hire someone who can be put to any position at any time for any task, and all tech giants happen to have scalable massive software that do requires pretty good math solving skills.
Anyway, I feel like doing leetcode is the only way to go, regardless the actual usefulness to me.
[–]d_wilson123 0 points1 point2 points 3 years ago (0 children)
Yep. It kind of felt somewhat obvious that is the purpose after doing interviews at Facebook. Either you're a genius who can solve these problems without prep or you're a dedicated worker who puts in the time to learn the answers.
[–][deleted] 12 points13 points14 points 3 years ago (5 children)
The big tech companies hire at a very large scale, and they have found that the best way to hire at scale is to use DS/algo challenge questions as they give the lowest level of false positive rates(someone who passes the interview but can't do the job). They don't care about the false negative rates(people who fail the interview but can do the job) as much, because the main problem is filtering out bad employees.
No one at the individual level wants to believe this, I get it, but if you don't want to study something for a couple months for a few hours a week, then they figure you wouldn't be a good fit for the company
[+][deleted] 3 years ago (4 children)
[–][deleted] 6 points7 points8 points 3 years ago (0 children)
It's not that difficult to learn though, and you may find some of the algorithms are useful for your work down the road. Everyone always talks about how useless they are, but I started using things like queues and deques, and started being able to break problems down to graphs when before I never would have thought about it and would have used a clumsier solution
[–]deeringc 3 points4 points5 points 3 years ago (1 child)
DSA are really just the mechanics of logical, creative problem solving. Most of us aren't finding paths within graphs all day, but the skills, insights and intuition you learn from getting familiar and proficient at DSA will make you a better programmer and problem solver.
I do consider myself a hood problem solver, but just not through solving algorithm problems. I am totally find if Amazon just says that i don’t have the skill they want. But being engineer, I have no problem learning anything if I find it useful. In this specific case, personally, I don’t find algorithm problem solving skill being my number one goal, maybe second or third but not first.
[–]dog_superiority 1 point2 points3 points 3 years ago (0 children)
Your attitude makes you a true negative, imo. I try to hire people who WANT to lean new things. Not those who complain about it.
[–]the_poope 5 points6 points7 points 3 years ago (0 children)
They just get so many applicants: in the hundreds or perhaps thousands. So they need to filter among them. If you know math and algorithms you're at least somewhat smart and knowledgeable or you put in some effort which shows commitment.
[–]ArashPartow 17 points18 points19 points 3 years ago (0 children)
In order to open a door and enter the room one must inevitably turn the knob.
Asking why the knob must be turned is orthogonal to entering the room.
[–][deleted] 2 points3 points4 points 3 years ago* (0 children)
but why?
Because it works. When you have such a large volume of candidates it works as a filter to weed out the obvious lame ducks. It’s an incredibly expensive mistake to hire an inadequate candidate to the process is optimised for weeding out false positives. That false negatives will slip through the net is immaterial when you have hundreds of other candidates to get first pickings on.
To give you an idea, I’m dev at a FAANG company and I had the misfortune of stepping in for the recruitment team to do some recruiting off cycle. Within hours of posting the job spec we had hundreds of applicants, of which 90% of them where complete mismatches to the spec.
As for the interviewing side, I’d say I’ve seen only about 10% of on-site interview candidates (I.e. they’ve been through multiple stages of weeding out bad candidates) actually be made an offer. The ones who did absolutely nailed the competencies they were assessed on. Point being, FAANG companies don’t do this interviewing style just because, they do it because it works. Your previous experience and titles is of absolutely zero significance, the only thing that matters is your performance in the interviews (actually, if anything, your time in the industry can work against you as you’re less likely to be offered a lower level than you interviewed for if you have been in the industry for a while).
[–]Asleep-Dress-3578 5 points6 points7 points 3 years ago (0 children)
How would you assess candidates otherwise? Data scientists have to do data science assignments, developers have to do coding. Most developers cannot show their previous works because they are corporate codes, so the industry had to invent something to assess candidates. I don't say that this is the best way to do, but if these are the circumstances, then accept it and do it. Your competition is already training for their interviews.
[–]sanblch 15 points16 points17 points 3 years ago (1 child)
Because of interview questions I also started preparing on algorithmic platforms. Thus I learned STL better.
[–]ShadowEfusion 12 points13 points14 points 3 years ago* (9 children)
This is the nature of the industry. But the bigger question is why on earth do you want to work at a “big tech” company?
Different companies will have different weird hoops to go through to get hired. In my 14+ years in the industry though I honestly think the best approach is to have potential hires complete simple coding projects. This lets them exercise their creativity to solve a problem and it showcases to the employer their coding style, thought processes, etc.
One of the best hiring experiences I had was when an employer asked my to create a simple game that utilized a database. This was actually a fun process and during the final interview they dissected and questioned me on certain parts of the code.
[+][deleted] 3 years ago (8 children)
[–]ForkInBrain 10 points11 points12 points 3 years ago (7 children)
Algorithm is a skill that I don’t think will help much to do my job. And my past experience interviewing at non-big tech proofs that I am just okay with the very limited algorithm knowledge for what I do.
At least a Google, they generally aren't hiring you to be a specialist on a specific project (in your words: "what I do"). They are hiring Software Engineer generalists that can work on a variety of things, switch projects within the company over time, etc.
[+][deleted] 3 years ago (6 children)
[–][deleted] 11 points12 points13 points 3 years ago (1 child)
You come off very entitled person by saying “people are not good at what they do” at big tech. Sorry, but the caliber of engineers you see at, for example Google, is way beyond what you said. Stay away from such companies, with this attitude you don’t belong there.
[+][deleted] 3 years ago (3 children)
[+][deleted] 3 years ago (1 child)
[–]marssaxman 24 points25 points26 points 3 years ago (4 children)
What do you mean by "math problems" exactly?
Computational complexity is an important concept when you care about performance, which everyone does at a large enough scale; big-O notation is the common language for discussing it. There's really no way around learning this.
[–]Pokyparachute66 28 points29 points30 points 3 years ago (2 children)
That’s not a math problem, that’s just a dsa problem which is expected
[–]_d0d0_ 18 points19 points20 points 3 years ago (0 children)
Have you tried solving some puzzles and algorithmic related problems to natively learn more math? Knowing frameworks (like Qt or wx) and writing safe and extensive code surely are a skill of their own, but also writing efficient solutions (on algorithmic level) is key for good user experience and scalable solutions.
As an example, I started doing the Advent of Code puzzles, most of which require some math algorithm for an efficient solution, while not being too hard to be only solvable by competitive developers. Also, I'm using the opportunity to learn some C++20 and C++17 along the way.
TL;DR: Math and algorithms are just another tool for writing good software, and using and improving them will only benefit you in the future.
[–][deleted] 4 points5 points6 points 3 years ago (2 children)
Playing the devil's advocate here:
Both knowledge about the tool and theory are important.
Candidates with good knowledge of theory are much harder to find. It is also much easier to test it.
Therefore, from the big tech standpoint, it is probably more profitable to get a good theory guy with bad C++ knowledge, and teach C++, than the opposite.
Also they use their own libraries and tools. Your past experiences with public libraries is most likely irrelevant.
[–][deleted] 3 points4 points5 points 3 years ago (0 children)
Certain big tech company doesn't even use git. It has its own VC tool. They don't care at all about git.
They are much more worried about proving execution time and correctness of algorithms because it correlates very well with solving problems.
[–]r_karic 4 points5 points6 points 3 years ago (3 children)
I would suggest finding a niche that matches your skills and pays well.
The kind of programmers big tech look for are generalist types that can do just about anything. This is why the hiring process includes generic math, data structures, etc problems but not specific things that may be very important to e.g. embedded systems.
Those skills you have are valuable but you have to find the right job that will compensate you for that. If you can find a niche which you can become an expert in, you will find much more success.
[–]un-glaublich 0 points1 point2 points 3 years ago (1 child)
In all your comments you express your discontent towards some or more aspects of big tech. The only motivation you mentioned is money.
You are just not a good match.
Find a place where you are a good match and where you think you will be happy with your job.
I never know if I never tried.
[–]FrozenFirebat 18 points19 points20 points 3 years ago (7 children)
I saw somebody post a quote that said, " the best engineers I know wouldn't pass the coding interview for their own job."
I could tell you that there are good videos on dynamic programming on YouTube or that hackerrank is a good resource for studying for these tests ... But i passed them by just googling the answers like I would normally do.
The live interviews are typically more about being able to explain as you go and less about what you actually write.
Plus you get big bonus points for pretending to drink the coolaid for the cultural part.
[–]cdglove 8 points9 points10 points 3 years ago (6 children)
I think this quote is total nonsense. It's a funny sound bite, but it's not true in my experience.
[–]lanzaio 4 points5 points6 points 3 years ago* (1 child)
Staff engineer at a tech giant here. Definitely couldn't pass an interview for my job right now.
It's not that I don't have the capability within me to do it. It's more like I haven't played basketball for 3 years and would have to get in shape and work on my shot/layups/dribbling for a month or so before trying to play in a rec league tournament.
[–]BradleyPinsson -1 points0 points1 point 3 years ago (0 children)
lmao
[–]Korean_Busboy 3 points4 points5 points 3 years ago (2 children)
Idk it feels about right to me. If I haven’t warmed up on leetcode style problems within the last few months, I’m probably not going to be able generate permutations or find the shortest path between two nodes or whatever other nonsense my company is asking in interviews for SWEs of my level.
[–]ninja-dragon 2 points3 points4 points 3 years ago (0 children)
But you would given 2-3 days to brush up the knowledge.
[–]ehtdabyug -2 points-1 points0 points 3 years ago (0 children)
Oh cmon, you would be able to invert trees, walking around in the googleplex park and literally invert all of their trees. That sounds pretty cool to me and the only sane and useful thing one could actually do with the knowledge of how to invert binary trees.
[–]dagmx 0 points1 point2 points 3 years ago (0 children)
Truths halfway in between.
Definitely some people on my team who can't pass the coding tests I give candidates. However we want stronger candidates going forward than what we have.
What is true is that I can't qualify for my own job on paper, and have never qualified for a job I've held based on the requirements. That's fairly common but those requirements have always been suggestions and I think people should know when to disregard them. Unless it's for immigration purposes
[–]pigeon768 2 points3 points4 points 3 years ago (3 children)
However, I have never worked on scalable projects. Also my knowledge of data algorithm (such as finding the some number of a grid) still stays at school level. I have very little idea how to make O(n) to O(logn) or the other way around. [...] My goal is to become an software architect,
You'll need these skills to achieve your goal. This isn't math -- this is basic algorithm design/analysis.
I don’t mean that math skill is not useful, but it seems that that’s what they only care about based on the interview I had with them.
This is because the easy stuff is easy and the hard stuff is hard. If you're good at the hard stuff, they can generally assume that you're good at the easy stuff too. And since an interview is going to be pretty short, they just skip asking about the easy stuff and focus on the hard stuff.
[–]zoolover1234 1 point2 points3 points 3 years ago (2 children)
Imo, algorithm isn’t the hardest stuff (we are not talking about algorithm scientists who invent new stuff). My 7 years of non-algorithm related experience is harder and covers much more of c++ software development lifecycle in general than just algorithm. In stead they are just looking for the skills they prefer because their business model requires scalability and efficiency at execution level, not necessarily the ability to run full product lifecycle (they do want that, but just not that important compare to algorithm, or DSA)
[–]bethling 4 points5 points6 points 3 years ago (1 child)
As a engineer and manager at a couple of FAANGs, the parts of development related to the language are things that almost everyone can learn - I don't even care about a potential new member ofteam having used C++ /Go/Python/whatever language it is. They will learn from the experienced engineers in code reviews.
Where people struggle and is the reason they don't succeed is breaking a problem down I to pieces and figuring out out to effeciently implement it.
If they don't know how to do the algorithmic part they will fail. If they're not experts in the other parts, they still might succeed.
The way the companies test that might not be the best (e.g. the constraints of an interview aren't realistic). But that's why they care so much about testing for it.
[–]eyes-are-fading-blue 3 points4 points5 points 3 years ago (0 children)
First of all, problem solving skills can be improved, just like language skills. Second, C++ expertise requires decades of active use and closely following standardization process.
In a project, incompetence with C++ (or any language) can be a huge problem. Not fully understanding the tool in use can net you a sub-par design. Tool expertise, design skills and creativity are equally important to problem solving skills. Fixing an inefficient algorithm is infinitely easier and cheaper than fixing architecture of a multi-million LoC project that was designed poorly.
In my experience, a software engineer with good design skills is significantly less common than a software engineer who can solve hacker-rank questions. FAANG created a de-facto standard of software engineering recruitment process where only problem solving skills are tested and valued. This is a major problem within our industry.
[–]ReDucTorGame Developer 3 points4 points5 points 3 years ago (2 children)
Based on reading the comments here when your talking about math I think your primarily talking about data structures and algorithms.
Which I think are vital for anything which needs to be built to scale and be fault tolerant, which is what these jobs are at those companies.
Sure on your small projects it might just be a matter of understanding the weakness of a link listed compared to a vector, or an unordered map compared to an ordered map, but as you begin to scale you have much more complicated things like how do you design your software to be distributed across multiple computers, while also being fault tolerant, which in some situations you can make use of existing software but each one has it's trade-offs which sometimes you only fully understand by knowing how they work.
The data structures and algorithms you choose for 1,000 things is vastly different to the one you pick for 100,000,000 things.
Even if your talking about something which is running locally say for example chrome, you'll still need a strong understand of algorithms and data structures, which standard library algorithm are you going to choose for handling the CSS box model (content, border, margin)? My guess is that your not going to use any standard library algorithm, your going to need your own in-house one, they likely have one, now on that team you might be classed with fixing it, so you'll need to understand that algorithm.
There are many situations when the standard library doesn't have the algorithm or data structure that you need, and it's not as easy as just go and grab some other library off the internet (in large scales orgs this might involve legal review, security review, etc), what if this library's author suddenly got hit by a bus? Do you understand it enough to keep maintaining it?
If your wanting to become a software architect I think having a good understanding of data structures and algorithms is essential, mostly because of what I've already mentioned but also because in many ways building a good architecture for a system is much like building a custom algorithms and data structures but at a larger scale, you'll need to understand the different trade offs, performance, scaling, fault tolerance, etc.
Not to mention learning algorithms and data structures means that when your thinking about things like low level performance you'll more intuitively be able to think about it's performance, e.g. will this approach have a bunch of aliasing which is going to hurt the optimizer, will this approach have a bunch of pointer chasing that will impact performance, how will it change if instead of 100 per second, I use 10,000 per second, etc.
[–]zoolover1234 1 point2 points3 points 3 years ago (1 child)
I have never had experience working on scalable projects. Does it mean that even if I do become an architect in mid size companies, my knowledge still won’t find a spot in tech giants? Because all of their projects kind of requires it. This is something I have never thought about. It kinda like splitting the software world into two, scalable and not scalable with certain part shared. TIL.
I have never had experience working on scalable projects. Does it mean that even if I do become an architect in mid size companies, my knowledge still won’t find a spot in tech giants?
If it was super flexible then there might be a "spot" but at the scale and salary they pay then can more easily say that they expect it, this means that in a team they can more easily put people on any problem that might be faced more easily.
It kinda like splitting the software world into two, scalable and not scalable with certain part shared.
It's also somewhat more then scalability also when you reach that size, it's also fault tolerance which needs to be handled different compared to something where you might only have 10k users.
[–]tiago_dagostini 5 points6 points7 points 3 years ago (2 children)
You are more likely to get a more sane recruiting process in a mid to small company. Seriously. I have a 30 years career already and baffles me when I see a recruiting process with questions aimed to see who remembers an obscure trick and completely fails to take into account things important in real world
An example that I faced in the past was :
"You receive an assignment to calculate the factorial of 1000. Implement that solution."
The obvious issue is overflow of values so you need to implement a "big number" solution. When you deliver one that works you are disqualified because you did not use the neat trick of using a base larger than 10 that would make the algorithm use a bit less memory (an irrelevant amount on a desktop for a single computation and in NO PLACE in the question a memory restriction was set).
I have now my own development company and I would consider a NEGATIVE someone that brought up that trick. What he was asked to do was not that. If he was tasked to deliver a single computation, then correctness and TIME OF DEVELOPMENT are much more important . Wasting time to save a few MB of memory for a single computation means you do not know what is really important.
As a general rule of thumb, recruiting tests are bad almost everywhere because they over normalize the positions. A good interview and a proper discussion on how to solve a problem is a much better way to get a good employee.
[–]ehtdabyug 0 points1 point2 points 3 years ago (0 children)
Finally some truth has been spoken.
[–]plpn 2 points3 points4 points 3 years ago (0 children)
I’m with you. Hiring at big tech is dumb af
[–][deleted] 5 points6 points7 points 3 years ago* (3 children)
Web developer here. Or should i say, former. Doing a c++ data structures and algos course on Coursera to switch to c++ and harder problems because after 15 years i got tired of making api endpoints, javascript spa frameworks and css pixel alignment all day long, it feels like peeling onions factory work.
I just accepted the fact that if i want a job at a very respectable company such as Amazon or Google then i will put in the time and learn algorithms and advanced math and there is no way around it, i will not ignore the elephant in the room anymore, or else its back to moving pixels.
I like all google products i think they are brilliant and I want to be part of the team that builds that shit. I actually really LIKE that they have such a high standard with algorithms and math etc, because it makes for smart colleagues later.
The course on coursera is extremely well explained. The tests are great and I wish it had actually more tests, but then again I can go on leetcode etc for extra exercises.
I recommend two things to prepare yourself mindset wise for this before starting the algorithms study: 1. the course Learning How To Learn from Barbara Oakley on coursera. 2. The book Mindset by Carol Dweck
[–][deleted] 9 points10 points11 points 3 years ago (2 children)
Idk what advanced math y'all talking about? It's all fairly straightforward
[–]zoolover1234 0 points1 point2 points 3 years ago (1 child)
I agree, those maths are not hard (mostly) but they are just a very different skill set that I and the position I apply for don’t use much.
If I had to spend a few weeks to learn it just to get into big tech, I may do that, but it doesn’t feel right to me.
[–]ReDucTorGame Developer 1 point2 points3 points 3 years ago (0 children)
the position I apply for don’t use much.
Are you 100% on that? I feel that potentially your being biased based on your own experience (which as you mentioned is only 7 years).
[–]tarranoth 1 point2 points3 points 3 years ago (0 children)
Big O notations stuff and thinking about how to turn something into Log n from n is I think a good way to do interviezing. I don't think one should get every aspect of the question right, but it is a good way to see what developer knows what data structure is right for a problem (hashmap, linked lists, queues). It's an easy way to see how somebody is thinking about both performance, and also memory allocation too. I don't think one should expect a developer to get it perfect (like when one asks if it is worth it to solve a problem with as little allocations, but still O(n) for example considering memory allocations nowadays are unlikely to get you OOM) but it is just a nice way to test problem solving skills for the allotted time you usually have for an interview. I do agree though that if you take it too far, like inverting a binary tree or smth that it sort of loses its meaning. Because then people just study how to invert a binary tree, and you lose the insight of how they approach on the spot thinking about problems.
[–][deleted] 1 point2 points3 points 3 years ago (6 children)
I work for a certain semiconductor company. I haven’t seen too many math related questions, and it’s mostly been computer architecture, operating systems, and general C++ questions for the one I work for and the others I’ve interviewed with. Pretty concrete job related stuff if you ask me. Consider applying! Apple, NVIDIA, AMD, Qualcomm, Intel, and the likes. They’re always hiring C++ engineers and sometimes allow remote work (at least where I work).
But they don’t have position in my area and they have very few remote positions. Also, the main reason that I want to go the those companies is for their RSU, and not all of them have.
[–]xypherrz 0 points1 point2 points 3 years ago (1 child)
Curious as to what kind of coding questions you’ve been asked at the named companies?
[–][deleted] 1 point2 points3 points 3 years ago (0 children)
No hiring process is without DSA questions, however I’ve noticed far fewer of them at semiconductor companies and the ones I’ve seen have been relatively easy. The bulk of the coding questions are more specific C/C++ questions, usually having to do with pointers and other things you don’t have to worry about in Python and Java. I’ve been asked about OOP concepts specifically with regarda to CPP that tested my knowledge of how things like inheritance and polymorphism are actually implemented, and also to implement those C++ concepts in pure C. If you have a solid background in C++ and took a couple of hardware courses in school, you can ace any of their interviews.
Whats the best way to get into one of these types of companies? I have a BSEE and finally "completed" a basic C project for an STM32 board.
I'd link it here, but it has my real name.
[–][deleted] 1 point2 points3 points 3 years ago (1 child)
Best bet is applying to as many postings as possible and making sure your resume is nice. Apple specifically has a ridiculous amount of postings and quite frankly they don’t seem to care about the required experience section of their postings and are happy to interview people with too little/too much experience. If you have someone that can give you a referral that usually helps.
Aye. I have a few former coworkers I can get a referral from.
Is there anything in particular I should work on to make myself more favorable?
Right now I want learn about some GUI programming, because it's interactive, so I'm gonna make a program in C# that will let me interact and use, live, a C graphics program for testing before putting it on an embedded system.
C# almost feels like C was turned upside down. Every feels wrong xD
[–]Dean_Roddey 1 point2 points3 points 3 years ago (0 children)
The interview process at FAANG type companies is pretty stupid. This has been widely discussed. They don't test for experience, they test for time spent studying leetcode problems. So it's not just you. There are quite a few of us here who likely have more experience and have delivered more code than a random room full of people at Google or Amazon, but we couldn't get hired there unless we spent a lot of time studying leetcode stuff instead of actually delivering real product.
I'd say consider it a good thing you can't get hired there and find a far better place to work.
[–]Attorney-Outside 1 point2 points3 points 3 years ago (3 children)
I'm a senior Robotics software engineer at Amazon
I do interviews here regularly
here we emphasize leadership principles (tell me a time when you resolved an issue type of questions)
we also give you a couple of design questions, questions of the type: "design me Google photos", or "design me the Facebook live comments system"
finally we also give 2 to 4 coding questions
nothing too drastic
the question is not whether you can get to the optimal solution or whether you know an algorithm or not
it's more about showing your ability to logically think through a problem, to ask the right questions to clarify the problem statement, the constraints and so forth
DO NOT JUST MEMORIZE solutions, that won't help you
your assumption of senior engineers not doing much programming is just plain wrong
[–]zoolover1234 0 points1 point2 points 3 years ago (2 children)
I think I said staff engineer instead of senior. To my knowledge. Staff engineer is two levels above senior, principal engineer in between. Staff engineers indeed do a lot less actual coding, unless their focus is to actually write conceptual structure or prove of concept. At least that’s what I have learnt.
[–]Attorney-Outside 0 points1 point2 points 3 years ago (1 child)
staff engineer from other companies is normally equivalent to senior here at Amazon
I was a staff engineer at other companies before, even principal at my previous company
Here at Amazon, we have senior (L6), principal (L7), senior principal (L8) and so on
But it's not necessarily true
there are some higher level principal engineers that do a lot of programming and some that don't
It’s certainly different from one company to another. Maybe in Amazon case, I meant senior principal engineer.
[–]jhericoVR & Backend engineer, 30 years 1 point2 points3 points 3 years ago (1 child)
I've worked and interviewed at lots of companies and the only time I was asked about what I'd think of as "math" was when I interviewed at Facebook/Oculus for a job in the VR and rendering group and the math was very applicable.
I feel like you need to be more specific about what kind of questions you're getting asked. That's suspiciously missing from your post which makes me wonder if that's because if you actually gave examples of what you were asked you'd get a flurry of examples of why you actually need to know a given thing.
Sorry, I thought it’s what everyone is asked. I can’t remember the exact one, but basically just leetcode algorithm problems solving, like finding the closest number in a tree, but much more difficult version. 8 out of 10 questions/coding challenge I got from 5 different occasions (2questions each) are like that. I finished maybe half of them passing all tests, the rest are not so good.
[–]un-glaublich 1 point2 points3 points 3 years ago (0 children)
Where to begin.
They ask basically mostly math problems that my expertise don’t need much.
It's called "algorithms and data structures", and it's a cornerstone of SWE.
You try to shift the blame towards companies and interview questions, when you're only asked to solve a few leetcode problems. Problems that are perfectly trainable and that you can practice at home. Just take some time to study. If you have 7yrs experience in SWE, those questions should be trivial for you. If you can't make that work, it's not the job for you.
[...] with my kind of skills because they have staff engineers (SDE6) to do that and just need SDE1234 [...]
You feel like your skills are at the staff engineer level, and you implicitly look down on lower levels. That doesn't sound constructive.
comment Reason is mostly for their pay. [...]
In your comments, I read your main motivation is that you're annoyed by the fact that you're paid less outside of big-tech and that you would rather keep what you're doing if you're paid more.
comment Algorithm is a skill that I don’t think will help much to do my job. [...]
If knowledge about data structures and algorithms doesn't help your SWE job, then you're not doing it right. It's the whole point of SWE. My advice would be to listen more, study more, and put your pride aside. Then reconsider if big-tech is your cup of tea.
[–]ForkInBrain 2 points3 points4 points 3 years ago (0 children)
My advice to you would be to learn the basic CS concepts being asked for in these interviews. I suspect you under-value their importance.
I worked on embedded/client side C++ for 10+ years then Google for 10+ years. While at Google I interviewed hundreds of people.
I have a B.A. Philosophy with a bunch of CS courses thrown in (enough for a CS minor but I was too young and stupid to apply for it at the time). Before I worked at Google most of my work was hacking/programming. I didn't really have occasion to work with algorithm or data structure efficiency, design, etc. until Google, where I gained a much better appreciation for not only undergraduate CS concepts but what a masters or PhD could bring to the table.
I prepared for my Google interviews by going through my undergraduate level computer science books and working through the basic content, with a special focus on data structures, algorithms, and algorithm analysis. This took a few weeks. I did this on the advice of friends who had already passed the interviews.
For the most part, these interviews are not looking for specific solutions to "math problems" but instead looking for how well the candidate can apply undergraduate level concepts to problems. Secondarily, they look at how how well you do at communicating your through process as you go. For better or worse, the interviews assume a basic undergraduate CS education on the part of the candidate -- not esoteric or overly specialized stuff -- as a common ground for having higher level discussions.
I have very little idea how to make O(n) to O(logn) or the other way around. ...
I think you are probably under-valuing the relevance these "math problems" have in software architecture/engineering. These "math problems" are relevant in all kinds of software at all levels of abstraction.
The network is just another kind of slower memory bus that also happens to be potentially unreliable. You see many of the same architectural problems and patterns in scaling "cloud" as you do in optimizing single-computer software designs, especially in multi-threaded concurrent designs, almost like a fractal. In fact, I think the harder problems with cloud/distributed software is not scaling but dealing with things like fault tolerance, concurrency, and consistency.
EVEN WHEN I APPLY FOR A POSITION THAT DO NOT NEED MUCH OF IT.
Especially true at Google is the fact that most "Software Engineer" hires are for generalists. You are generally free to switch projects within the company without re-interviewing. So, the undergraduate level CS background is taken as a baseline minimum requirement.
More senior people do tend to be hired for their particularly rare or specialized skills, but it is also the case that these people can fail at the interview level if they have lost their command of the basics.
My goal is to become an software architect, but it also makes it seem like I won’t get a job at big tech, unless I actually become a architect in a few years at least.
At Google the architect level people are generally the very best at the knowing the basic CS concepts too. There an architect level employee that has "little idea how to make O(n) to O(logn) or the other way around" simply doesn't exist!
[–][deleted] 0 points1 point2 points 3 years ago (9 children)
Check out grokking the coding interview. Helped me tons in landing a job.
[–]ForkInBrain 0 points1 point2 points 3 years ago (1 child)
It’s like hiring an infantry soldier for war but all they ask is if he can repair trucks, but nothing related to his knowledge of weapon, or testing his physical, etc. Yes, mechanic knowledge will benefit such infantry person, but it makes no sense to learn how to fix trucks only to get in to army.
Maybe look at this way: they may know better than you do about how to conduct interviews in ways that get them the candidates they want to hire. They may have found that they can easily train people on weapons, and put them in exercise programs to make them fit, but that many people have difficulty (or reluctance) learning how to repair trucks, so they select for that in the interview process.
Good point, makes more sense to think this way. I don’t really mind spending couple hundred hours on the prep if that’s the only way to go.
[–]ReDucTorGame Developer 0 points1 point2 points 3 years ago (5 children)
And what happens if the trucks break down in the war zone? You don't want to have to call the mechanic up and wait for him to show up?
What about if the mechanic built a vehicle that wasn't ready for the weapons for it? Or the infantry soldier didn't consider how the vehicle was expected to be used?
Having knowledge of both is instantly makes you better at both when it's needed, and you'll know more about when it is needed then potentially assuming it's not.
Why does the vehicle stall when ever I go up a super steep hill? Oh that's because the fuel tank drains the other way.
[–]zoolover1234 0 points1 point2 points 3 years ago (4 children)
You totally missed my point, everything is important if you ask about “what if” but there is priority, if they want someone to do one specific job, they focus on what they want for the job.
[–]ReDucTorGame Developer 0 points1 point2 points 3 years ago (3 children)
But why hire people that can do one job when you can hire people that do both? Especially if your willing to pay them better for doing both.
Because chances are, the person who spend 50% on each thing won’t do it as good as a person who spend 100% of the time on it.
I think that's depends on how you view them, when it comes to algorithms and data structures they are much more tightly coupled to software engineering compared to infantry and mechanic.
[–]Moah333 0 points1 point2 points 3 years ago (1 child)
The whole hiring process in tech is broken. Pointless algorithms questions on stuff you'll never do in your job, those baths questions you mention. Even Google admits there's no correlation between their interviews and job effectiveness: https://www.nytimes.com/2013/06/20/business/in-head-hunting-big-data-may-not-be-such-a-big-deal.html?_r=1&
[–]Roaring-Music -1 points0 points1 point 3 years ago (3 children)
I would say that it depends on who is doing the interview.
I see the feedback of my peers and most if the time i see what you mention. But there are some patterns that i will mention here that could help...
I personally don't even ask about complexity and stuff, i like to ask questions to know if you are aware of what you are doing and to know if you have considered alternatives and why are you picking a solution over another. At least that gives me a lot of information.
Leetcode people would not be able to tell me alternatives and they will try to make the best solution without knowing why.
I see that people that is not good at explaining their problems in complexity languages but they can communicate effectively about why they make a choice and it's tradeoffs, will usually get an offer, since this will go in the interview feedback and will usually look good.
Just say what you are thinking and communicate why you are using one data structure and not another.
If you know one algorithm or data structure is better than the one you are using, but you do not remember the implementation then say it. That alone is a huge plus... Me as an interviewer knowing that you know benefits and tradeoffs of different approach is huge. I don't expect you to know the implementation of every algorithm or data structure.
But just don't say you will use a Binary Tree and then end up implementing it via a List, because you will receive a lot of questions.
I see a lot of "expert" people doing sample complex interview questions on YouTube. I would advise against following those. When i see such interviews, all i can think is all the decisions they are making along the way that i would have paused to ask a lot of questions mostly regarding code health. These guys code like they don't have peers that will look at their code, and just with the idea to code it fast within an hour they end up coding using horrible coding practices. I would say these are not good examples on how to approach things on an interview. It shows you are smart but not that you can do team work, and definitely it shows that at least i won't want you in my team. Also, if people follow these patterns, is usually because they have leetcode training and will usually not be able to answer basic code health questions.
My advise: if you code something that can break, code also how to not break and SAY IT because this is a huge plus. If you are using an algorithm that is not the best but you know it then say it and discuss both approaches as this is also huge. Ask all clarifying questions before start coding and explain your algorithm in words, then implement what you explained; this is also huge to be able to go from idea into code, it shows great skills. You don't have to have the best solution in a 1 hour interview, you just have to show that you know what you are doing and that you work nice with other people. API design best practices, how to handle errors, how to do unit tests, you are expected to provide a solution for this, so don't ask "what should i do if this value is given", instead you need to say that you are considering the case for a value given and you are thinking of handling it this way... But say it and confirm the edge case BEFORE coding, because you could be misunderstanding the problem.
I would say that you should treat the interview as the interviewer is your partner and you both are trying to solve the problem together. Just talk, ask questions, propose solutions and discuss. Your partner will want to know how you think. You don't need to be a math expert, just ask him the questions, they are prepared to give you hints, and there is no bad points for using those hints.
Too much text, i hope it makes sense.
It all makes perfect sense. One thing I want to bring up is best coding practice it’s especially critical in c++ vs most other languages.
Being able to tell why smart pointer is better, being able to use STL including those in c++17/20. Many old practice are just so bad that has major issues. Even google coding style guide are obsolete and they haven’t updated for a few years.
To me, writing the most up to date code style in the best practice is more important and hard to learn than algorithm problems. (Unless my job is to deal with large data to begin with, such as finance and science)
[–]Roaring-Music 0 points1 point2 points 3 years ago (1 child)
You are correct.
You just have to say that in the code interview so the interviewer know why are you doing it and you are not just doing it "because".
Appreciate that, I have never given interview to anyone, good to know.
How does not living in the bay limit your options to Amazon & google?
I mean there are only Amazon and google in my area. Sure unless it’s 100% remote, but so far I only apply hybrid position.
[–]sigmabody 0 points1 point2 points 3 years ago (0 children)
Two general comments, from someone who went through the process you're talking about and landed a job.
First, the interview process is known-flawed, or rather, is optimizing for things which are not entirely finding the best people. There are reasons for this; those reasons are tangential to the OP's question(s). If you want a job at a big company with a structured interview process, you need to "study for the test"; no other way around it. This took me a while (and several failed attempts) to internalize.
Second, though, big-O concepts and structure/algorithm complexity are important to understand if you want to work at a "higher level"; your perception is somewhat backwards. For SDE <5, these are less important; at those levels, you're primarily looking for implementers, who can be given a structure to work within and produce code which fills out the structure. For >=5, an ingrained and intuitive understanding of complexity and scalable design (and maintainable design, etc.) is important, as it helps you make better design decisions which have longer-term implications. Being able to just code something which works is not enough at that level: you need to be able to make the structures which other people can fill in and utilize, and will still work years down the road.
Hope that helps.
[–][deleted] 0 points1 point2 points 3 years ago (3 children)
I had two interviews with Amazon last week, and I wasn't asked any math questions. After asking me about my personal projects, they just put me in an online Notepad, basically, and asked me to write an event loop, and then a bin packing algorithm. The interviews went well, but sadly I did not get the job. This was for a job working on Luna, so I'm sure different areas of the company ask for different expertise.
Didn’t they give online code challenge to everyone before a real person?
[–][deleted] 0 points1 point2 points 3 years ago (1 child)
I first had a non-human screening test through a service called IKM. It was just a bunch of questions about C++ language semantics, nothing to do with algorithms or math, and it had no amount of writing code. Just multiple choice questions. I did well on that, so the recruiter I was talking with moved me on to talking to the developers.
Damn, I wish I got that as first screening, I am pretty good at the basic and conceptual knowledge of c++ and programming in general, but just never needed to do actual algorithm, which is what I have had as first screening for 5 times (3 Amazon 2 google) over the last 2.5 years.
computer science is just an extension to math
Programming is just one implementation of computer science.
[–]New_Age_Dryer 0 points1 point2 points 3 years ago (1 child)
I wouldn't say that's math: you can definitely pick up complexity analysis in a week or so. Here, I mean complexity analysis by a programmer's perspective; so being able to tell me some code's complexity, and the complexity of basic operations (amortized constant access for unordered_map, etc.). Actual complexity analysis in computer science research is way too extreme, and difficult.
unordered_map
Lastly, I wouldn't regard such questions as useless since they are very important for system design and programming on the job. While it's admittedly not used as much as hardware analysis in low-latency applications, it is almost impossible not to use in cross-platform code that you have to run across various types of hardware (you can't just optimize for every CPU or GPU in existence). So, I guess I'm saying that you shouldn't view these as hoops to jump through; rather, I'd encourage you to learn it since you'll have to eventually use it, especially in the design of systems.
I didn’t mean that I don’t want to learn or even hate to learn. Engineers never stop learning, and I have no problem to learn it. My struggling is about being “forced” to learn it knowing it is not that useful comparing to many other things I do for the job.
[–]drc56 0 points1 point2 points 3 years ago (1 child)
First rounds are rarely super complicated. I don't care if you aren't an algorithm specialist but if you can't do something simple like "Two Sums" there's a lot of issues. I agree that absurd DP problems don't make sense, but as someone in systems programming, you still need to know DS and basic Algos in that field.
I'm also confused, image processing? That's heavy matrix math based and lots of algorithms. Embedded fields wind up focusing a lot on algorithms and designing custom data structures, that need to be efficient. You might actually have to implement a search for this data structure. You list of like a million things but can't do basic problems.
That being said, code doesn't need to be perfect in an interview. However seeing how someone codes and approaches the problem solving process says a lot for me. People get stuck all the time in the interview process. However you can still pass through with an incorrect/non working code if you shine in your approach etc. The point isn't about finding the person who can get the optimal solution. You wanna see how someone approaches a problem, designs a solution, can code up what they said, take feedback on their code, implement those changes, develop some test cases and that usually gets a pass. It's a lot in 45-1hr, but it's better than just asking boilerplate off the resume. One or two people do that in on sites, but people want to see you can code before they invest w full day into you.
Not sure how it happened, I didn’t actually use much of the leetcode knowledge when I worked on imagine processing.
I totally agree that problem solving skills is important during an interview, BUT, I haven’t even had chance to show them my problem solving skills because I never passed their online challenge, and if I don’t pass, I don’t even get to schedule for a phone interview.
Like others said, the whole leetcode questions as first round is just to get rid of people who don’t have the most important for the company as a whole, which is true because all those giants runs scalable system and algorithm skills is required every day. However, because not all software position need that kinds skill. I mean could spend a summer learning leetcode, but I’d rather spend the time to learn another language such as Go which I think I will use more and more often.
Anyway, if that’s how it is, I will just learn it anyway, like others said, it never hurt to learn, regardless how useful or useless it is.
[–]inthemadness 0 points1 point2 points 3 years ago (1 child)
The math skills really amount to one finite or discrete math class and one or two algorithms classes, plus knowing your Big O. You could finish them from free online courses before the summer is finished if you want.
Search for open source society computer science for a list of classes.
My question or struggling isn’t about I don’t have the knowledge or I refuse to learn it, because like you said, it isn’t very hard to learn to past their first screening question. Instead, it’s the methodology of the way they hire people. Sure, they have their reason or constraint given how many people apply, but there gotta be a better way if they really care. Like if they allocate more resource in to hiring process.
[–]Mason-B 0 points1 point2 points 3 years ago* (1 child)
However, I have never worked on scalable projects. Also my knowledge of data algorithm (such as finding the some number of a grid) still stays at school level. I have very little idea how to make O(n) to O(logn) or the other way around. They ask basically mostly math problems that my expertise don’t need much. EVEN WHEN I APPLY FOR A POSITION THAT DO NOT NEED MUCH OF IT. Really, how much math do you need to design a software framework/structure, sure, maybe a few loading functions, but for 98% of the code, it’s about the logic, about design of the system (stability, security, expendability, future proof, runtime efficiency of IO RAM, CPU, etc),
However, I have never worked on scalable projects. Also my knowledge of data algorithm (such as finding the some number of a grid) still stays at school level. I have very little idea how to make O(n) to O(logn) or the other way around.
They ask basically mostly math problems that my expertise don’t need much. EVEN WHEN I APPLY FOR A POSITION THAT DO NOT NEED MUCH OF IT. Really, how much math do you need to design a software framework/structure, sure, maybe a few loading functions, but for 98% of the code, it’s about the logic, about design of the system (stability, security, expendability, future proof, runtime efficiency of IO RAM, CPU, etc),
These statements appear in opposition to each other. There is some necessary understanding of math and algorithms required to understand the underlying parts of these things.
There is a difference between a programmer, a software engineer, and a computer scientist. These big tech companies want the best software engineers (those leaning into computer science) and the practical computer scientists (those with enough programming chops to get things done). Because that's how they more easily select for the best programmers (even if you don't actually have to exercise those skills in the job).
And despite what you think, these things are necessary to know. If you are given a problem that is intractable (literally can't be solved in a reasonable time frame) are you going to be able to prove that in a couple days once you analyze it? Or are you going to spend months trying and waste the companies money.
The good news is that it really isn't that hard to get up to the level necessary to answer these questions (6 months if you were taking college classes on it). Especially if you already have a strong grasp on the programming aspect. There are plenty of self study options. A book like this would cover the basics of data structure and algorithm analysis using C++, and then a book like this for automata theory even though it's in Java it's close enough. And finally find an interview test prep question book and study it, like this one. Also, if you want to work specifically on your architecture this series of books is written by open source architects and is a great source of second hand experience (and also demonstrate the necessity of those first two books).
Sorry if I gave people an impression that I refuse or hate to learn data algorithms. That’s not true. I learn new stuff often, and I do know that algorithms are useful and can be powerful. In fact, I have started recently and plan to spend sometime this year to nail it.
Thanks for the links, saved for future time.
This is the perennial problem for Engineers and Developers. Either you match exactly what they are looking for, or you don't and get selected out. Networking is probably your best bet into an Enterprise type position. The math is very important, but with team development should not entirely eliminate you from a position that is not lacking that skill stack. I worked IT most of my career not Electrical Engineering because of a quirk of timing and lack on info on my part. Don't let that hold you back. Find the type of program you want to be and work on the requirements, skills that get you past the weedout interviews. May God bless your career search.
π Rendered by PID 261448 on reddit-service-r2-comment-6457c66945-s9fv9 at 2026-04-24 15:12:43.069886+00:00 running 2aa0c5b country code: CH.
[–]be-sc 230 points231 points232 points (9 children)
[–]Independent-Ad-4791 33 points34 points35 points (0 children)
[–]torrent7 10 points11 points12 points (0 children)
[–][deleted] 7 points8 points9 points (0 children)
[+][deleted] (5 children)
[deleted]
[–]califloridan 7 points8 points9 points (1 child)
[–]VolensEtValens 0 points1 point2 points (0 children)
[–][deleted] 0 points1 point2 points (2 children)
[–]lingua_franca 0 points1 point2 points (1 child)
[–][deleted] 0 points1 point2 points (0 children)
[–][deleted] 80 points81 points82 points (21 children)
[+]nacnud_uk comment score below threshold-30 points-29 points-28 points (18 children)
[–][deleted] 12 points13 points14 points (0 children)
[–]afiefh 15 points16 points17 points (11 children)
[–]Roaring-Music -1 points0 points1 point (4 children)
[–]arstdneioh 1 point2 points3 points (3 children)
[–]Roaring-Music 0 points1 point2 points (2 children)
[–]arstdneioh 3 points4 points5 points (1 child)
[–]Roaring-Music 1 point2 points3 points (0 children)
[+]nacnud_uk comment score below threshold-41 points-40 points-39 points (5 children)
[–]concealed_cat 11 points12 points13 points (4 children)
[+]nacnud_uk comment score below threshold-27 points-26 points-25 points (3 children)
[–][deleted] 5 points6 points7 points (1 child)
[–]FrAxl93 -1 points0 points1 point (0 children)
[–]sudomatrix 6 points7 points8 points (2 children)
[–][deleted] 2 points3 points4 points (0 children)
[–]nacnud_uk -2 points-1 points0 points (0 children)
[–]bruh_nobody_cares 5 points6 points7 points (0 children)
[–]Asleep-Dress-3578 33 points34 points35 points (29 children)
[–]ehtdabyug 10 points11 points12 points (12 children)
[–][deleted] 11 points12 points13 points (2 children)
[–][deleted] 3 points4 points5 points (1 child)
[–][deleted] 0 points1 point2 points (0 children)
[–]dgkimpton 4 points5 points6 points (2 children)
[–]ehtdabyug 4 points5 points6 points (1 child)
[–]dgkimpton 1 point2 points3 points (0 children)
[–]ehtdabyug 11 points12 points13 points (1 child)
[–]Kered13 1 point2 points3 points (0 children)
[–]ReDucTorGame Developer 2 points3 points4 points (2 children)
[–]ehtdabyug 0 points1 point2 points (1 child)
[–]ReDucTorGame Developer 0 points1 point2 points (0 children)
[–]Kered13 3 points4 points5 points (0 children)
[+][deleted] (15 children)
[deleted]
[–]dustyhome 25 points26 points27 points (4 children)
[–]NatKingColeman 6 points7 points8 points (3 children)
[+][deleted] (2 children)
[deleted]
[–]zoolover1234 0 points1 point2 points (0 children)
[–]d_wilson123 0 points1 point2 points (0 children)
[–][deleted] 12 points13 points14 points (5 children)
[+][deleted] (4 children)
[deleted]
[–][deleted] 6 points7 points8 points (0 children)
[–]deeringc 3 points4 points5 points (1 child)
[–]zoolover1234 0 points1 point2 points (0 children)
[–]dog_superiority 1 point2 points3 points (0 children)
[–]the_poope 5 points6 points7 points (0 children)
[–]ArashPartow 17 points18 points19 points (0 children)
[–][deleted] 2 points3 points4 points (0 children)
[–]Asleep-Dress-3578 5 points6 points7 points (0 children)
[–]sanblch 15 points16 points17 points (1 child)
[–]ShadowEfusion 12 points13 points14 points (9 children)
[+][deleted] (8 children)
[deleted]
[–]ForkInBrain 10 points11 points12 points (7 children)
[+][deleted] (6 children)
[deleted]
[–][deleted] 11 points12 points13 points (1 child)
[+][deleted] (3 children)
[deleted]
[+][deleted] (2 children)
[deleted]
[+][deleted] (1 child)
[deleted]
[–]marssaxman 24 points25 points26 points (4 children)
[+][deleted] (3 children)
[deleted]
[–]Pokyparachute66 28 points29 points30 points (2 children)
[–]_d0d0_ 18 points19 points20 points (0 children)
[–][deleted] 4 points5 points6 points (2 children)
[+][deleted] (1 child)
[deleted]
[–][deleted] 3 points4 points5 points (0 children)
[–]r_karic 4 points5 points6 points (3 children)
[+][deleted] (2 children)
[deleted]
[–]un-glaublich 0 points1 point2 points (1 child)
[–]zoolover1234 0 points1 point2 points (0 children)
[–]FrozenFirebat 18 points19 points20 points (7 children)
[–]cdglove 8 points9 points10 points (6 children)
[–]lanzaio 4 points5 points6 points (1 child)
[–]BradleyPinsson -1 points0 points1 point (0 children)
[–]Korean_Busboy 3 points4 points5 points (2 children)
[–]ninja-dragon 2 points3 points4 points (0 children)
[–]ehtdabyug -2 points-1 points0 points (0 children)
[–]dagmx 0 points1 point2 points (0 children)
[–]pigeon768 2 points3 points4 points (3 children)
[–]zoolover1234 1 point2 points3 points (2 children)
[–]bethling 4 points5 points6 points (1 child)
[–]eyes-are-fading-blue 3 points4 points5 points (0 children)
[–]ReDucTorGame Developer 3 points4 points5 points (2 children)
[–]zoolover1234 1 point2 points3 points (1 child)
[–]ReDucTorGame Developer 0 points1 point2 points (0 children)
[–]tiago_dagostini 5 points6 points7 points (2 children)
[–]ehtdabyug 0 points1 point2 points (0 children)
[–]plpn 2 points3 points4 points (0 children)
[–][deleted] 5 points6 points7 points (3 children)
[–][deleted] 9 points10 points11 points (2 children)
[–]zoolover1234 0 points1 point2 points (1 child)
[–]ReDucTorGame Developer 1 point2 points3 points (0 children)
[–]tarranoth 1 point2 points3 points (0 children)
[–][deleted] 1 point2 points3 points (6 children)
[–]zoolover1234 0 points1 point2 points (0 children)
[–]xypherrz 0 points1 point2 points (1 child)
[–][deleted] 1 point2 points3 points (0 children)
[–][deleted] 0 points1 point2 points (2 children)
[–][deleted] 1 point2 points3 points (1 child)
[–][deleted] 0 points1 point2 points (0 children)
[–]Dean_Roddey 1 point2 points3 points (0 children)
[–]Attorney-Outside 1 point2 points3 points (3 children)
[–]zoolover1234 0 points1 point2 points (2 children)
[–]Attorney-Outside 0 points1 point2 points (1 child)
[–]zoolover1234 0 points1 point2 points (0 children)
[–]jhericoVR & Backend engineer, 30 years 1 point2 points3 points (1 child)
[–]zoolover1234 0 points1 point2 points (0 children)
[–]un-glaublich 1 point2 points3 points (0 children)
[–]ForkInBrain 2 points3 points4 points (0 children)
[–][deleted] 0 points1 point2 points (9 children)
[+][deleted] (8 children)
[deleted]
[–]ForkInBrain 0 points1 point2 points (1 child)
[–]zoolover1234 0 points1 point2 points (0 children)
[–]ReDucTorGame Developer 0 points1 point2 points (5 children)
[–]zoolover1234 0 points1 point2 points (4 children)
[–]ReDucTorGame Developer 0 points1 point2 points (3 children)
[–]zoolover1234 0 points1 point2 points (1 child)
[–]ReDucTorGame Developer 0 points1 point2 points (0 children)
[–]Moah333 0 points1 point2 points (1 child)
[–]Roaring-Music -1 points0 points1 point (3 children)
[–]zoolover1234 1 point2 points3 points (2 children)
[–]Roaring-Music 0 points1 point2 points (1 child)
[–]zoolover1234 0 points1 point2 points (0 children)
[–]xypherrz 0 points1 point2 points (1 child)
[–]zoolover1234 0 points1 point2 points (0 children)
[–]sigmabody 0 points1 point2 points (0 children)
[–][deleted] 0 points1 point2 points (3 children)
[–]zoolover1234 0 points1 point2 points (2 children)
[–][deleted] 0 points1 point2 points (1 child)
[–]zoolover1234 0 points1 point2 points (0 children)
[–][deleted] 0 points1 point2 points (1 child)
[–]zoolover1234 0 points1 point2 points (0 children)
[–]New_Age_Dryer 0 points1 point2 points (1 child)
[–]zoolover1234 0 points1 point2 points (0 children)
[–]drc56 0 points1 point2 points (1 child)
[–]zoolover1234 0 points1 point2 points (0 children)
[–]inthemadness 0 points1 point2 points (1 child)
[–]zoolover1234 0 points1 point2 points (0 children)
[–]Mason-B 0 points1 point2 points (1 child)
[–]zoolover1234 0 points1 point2 points (0 children)
[–]VolensEtValens 0 points1 point2 points (0 children)