Senior Software Engineer Mock Technical Interview (Coding/Algorithms in JavaScript)

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
welcome to my web development podcast where i help aspiring developers get jobs and junior developers grow in this podcast episode i hosted a mock interview uh where it's more like senior level for software engineers that are going into like a algo coding heavy technical interview and for the interviewer i invited sophie who's the ceo of formation who has created a company so she basically does this for a living and she helps a lot of junior to mid side or mid-level engineers get into more senior roles at larger companies like google lyft kind of just like the harder technical interviews and for the applicant if you guys watch my previous mock interview which is more for entry level i brought dan my friend on who did the last one to actually be the interviewee this time so dan is a senior level engineer and we're giving him a senior level technical interview so let me know what you think let's jump into it hey dan hey sophie good to meet you good to meet you uh super excited to be chatting so i see that you're currently an engineer at coinbase right uh yeah so i've been at coinbase uh as a front-end developer for about eight months um prior to that i worked at an education startup in chicago for over five years where i kind of saw that project go from like zero customers to this like actually like legit platform that's that's used by um i don't know a good chunk of high schools in the us very cool okay well um very excited to learn more about that um just to give you kind of an overview um we'll want to want to learn a little bit more about kind of your your career history and as along with some of the stuff that you're doing currently at coinbase um and uh and and we'll hopefully spend most of this uh time on on a coding exercise after that um but yeah i guess if that sounds okay um uh yeah can you briefly describe kind of the the team that you're on at coinbase and and the work that you're doing there yeah for sure so um currently i'm on the growth team so that really it involves like making sure that people that sign up for the platform um start interacting with the platform so for instance like you know making sure that people make an account um buy crypto set up recurring buys really just engage with the platform and i primarily work on the uh react native app but i bounced around to react web as well um that fun fact i actually had not used react native before coinbase had to like learn it all um on the job and it's been it's been super fun i've just been having a ton of fun like learning a new technology cool can you tell me a little bit more about kind of what your process was for getting ramped up on on react native yeah for sure so thankfully the promise of reacts like learn once and uh write anywhere is actually true so like it it does feel very like comfortable going from react uh web to react native because like you're still just writing react um also we have like a super robust uh design system at coinbase so a lot of the you know it's like with react native you don't have access to like um all the html elements but like it doesn't matter because we have like just component uh design system components that we use for most uh things and yeah i mean aside from that um there's there's a lot of like really awesome um react native developers that are there to help people out we have like uh mentors who essentially just are there to onboard people with react native um because yeah like unlike react webwork there's like so many react web developers um i feel like react native is like definitely less uh you know there's like less react native devs around have there been any like gotchas of like something that didn't translate quite exactly as you expected between uh react and react native yeah so the i mean honestly the scariest thing for me is the fact that there is like native code uh yeah like as a web developer hop down into native code um sometimes especially when you have to like uh initially like set up the application like some you know some error happens that's like in one of the native modules and you have to like go debug i haven't actually had to like write native code but i've had to like debug it just to like make sure that what's one um i mean it's it's honestly just been more like understanding what was causing like my build to not uh not build correctly um and yeah usually it's just like okay like maybe it's like some dependency that that i'm missing or something like that um but yeah i mean i would say that the other big thing is that like styling is just completely like uh i feel like the the web has come a long way with css and all the things that you can do uh react native css is extremely limited um so it can be much more difficult to like precisely like style things but again thankfully you know we have a really robust uh component design system so there's not a whole lot of styling going on yeah i think web uh styling is a lot more flexible because you know with mobile i feel like both the mobile platforms have more like established uh patterns for how apps look on on each platform so that makes sense um i guess going back to um so you were at albert for a bit before looks like you were also at glassdoor for some time is that is that right yep so i did a brief stint um at glassdoor between um albert and coinbase and what motivated you to want to make a recent change the recent change between glassdoor and coinbase um i mean so yeah if i'm being honest like it was a great uh like love the people at glassdoor but i guess just the code base wasn't what i wanted to work within um i found it like like with the tech stack or no i mean it was still like a react tech stack but the like the client server and like a lot of the foundational pieces just were not they were very like uh you know in-house built and i personally just didn't feel very productive um so i was like you know i i kind of made this decision of like i haven't been here for that long and i feel like if i stay any longer i'm gonna be here for like you know two plus years because i have like a track record for actual or nothing yeah i feel like staying in places for a while um so i was like yeah like i don't know i feel like i could go um i could look for something where i can find myself being more productive and thankfully i had a friend at coinbase i was like yeah like it's super chill here and like yeah like the code base is great um you know like i mentioned there's a lot of like uh awesome like developer productivity uh things that just make it easier for me as a you know individual contributor to actually contribute uh those those features that that we're trying to build got it cool um well let's um maybe transition over into another coding portion of this call so i think maybe um you could go ahead and share screen um cool i believe that should be up on the screen yep cool awesome um so the problem that we're going to work on today um uh uh it involves uh strings so what you're going to be provided as input is um a dictionary of words but it really just is an array of words i guess and what we want to do is um fill in two functions so one function is going to be called um setup and it will take this input dictionary of words and a second function called is in perfect and it will take a word and um yeah this will basically return true if it was originally in the input dictionary and it will return false otherwise and the goal is to um is to do as much work as possible in the setup function to optimize our is indict function okay so i think i understand is indict essentially that's you know given a word it's going to return true or false whether or not that's going to be in one of the original input words um so could you explain setup a little more like um yeah what like why do i need setup so it's gonna basically give you the list of words um so let's say we call setup and then recall is it afterwards um if we did this this would return true um if we did this it would return false cool so either do you can either store some stuff in like a global variable you can you can create a class if you prefer um but essentially the setup function consumes a dictionary and remembers it in some format and um your isn't it should reference that um cool i i mean i want to i feel like i i want to set this up as a class because it feels better to like encapsulate like a dictionary in a thing rather than have like this global uh variable um so let's yeah let's do this and i guess would it make sense to like would i should i be able to call setup later and like um re-initialize the the dictionary or or is something like that like not necessary and the reason i ask i guess is because if we set it up as a class then um you know we could just pass instead of having a setup we could just pass the input to the class constructor and initialize the dictionary that way that sounds fine okay let's do that then so we're going to have a class that's called what's called dictionary um wow coderpad not giving me automatic brackets um i think we might be able to oh it's not it's not good i can yeah it already has you're gonna you have to just type in your own brackets let's see lot of clothes there we go cool all right so dictionary is going to have a con constructor um and then it's going to have is indexed that's going to be a word and essentially so something that i kind of like to do is just uh like write how i would use a thing um so we want to say cat car and bar let's let's just say like test uh is a new dictionary with the words and there's gonna be an array right so cat r and bar and then we want to test uh oh why don't we like console.log test is indict cat which should be true and then how about uh dawn which should be false so um i mean i just want to reach for a set i guess here um so that's not the right syntax there we go uh so words let's say say this bix equals new set um that's a words array i guess and i want to say that [Applause] we have to spread it not totally sure about that but i think that is how we do it and then we can say return this foods word um yeah right now there's like maybe like three things that i would want to look look up on mdn but let's run it and see what happens includes is it has i never remember all's false so it doesn't have don so let's say console log cool oh my god that's what it did yeah i think this has to be i think cool so we can remove the console log and then yeah so cat is in the dictionary don is not um i will say that i do feel like using a set is kind of like cheating since it includes like is indexed as essentially has and the dictionary is essentially a set yeah cool so i'm gonna um kind of change up the problem a little bit so um now let's say that um we're given this um original dictionary as is but now when we're calling is indict we might have a wild card character so as an example um you know you might have and this isn't regex so it's just the star just maps to one of an existing character um so this would return true um and i guess this would return false cool so the the star can be any of one character at that place in the string right cool so um my first so i kind of want to reach for some um some being like array.some and like now i'm like cool why did i use a set because i don't know what methods a set has um you can totally look up totally okay to look up syntax for anything that you need cool i mean let's just um let's do this this i guess can become includes um cool so that still works so now what i actually want to do is return this predict some so what we want to know is does some dictionary word match the incoming word with wild cards um you are right that i could use a regex for this we could create a dynamic ragex where uh you know like let's just for fun um i think we could say um so hans x template equals word we're going to replace that star with a dot which is like the any keyword and then we can say construct x equals [Music] template and then return test now we want the right start with that and end with that i know how that works there we go will this work so catch should still be true don should still be false let's test that true false wow that was i wasn't confident not gonna lie uh so let's say r-a-t so it should be true true false true true false amazing um let's do star a star true true that one should have oh because it needs to be global so we're gonna do um wow can we use replace all i didn't know that that was a thing oh my gosh that works okay cool but kind of like uh kind of like this said it's like oh you know like the question is clearly asking if we can do this without a regex so the yeah i mean do do you want to try to do this without using like a a dynamic ragex i think you're muted sorry about that um yeah so let's yeah let's try something without regex in a bit um but um can you kind of um uh i guess break down what the kind of runtime and space complexity of both the constructor i guess in your case and the is indict function um yeah so sum is going to be um i mean the constructor just you know sets it to be an array that that would be uh oh one sure um but then some would be o n since we have to iterate through every word in the uh words array and then where i kind of like where i guess just the answers i don't know is i actually have no idea what the time complexity for regular expressions is um so i know that the sum is on but then the fact that we're doing a regex inside i'm sure like tweaks that a little bit yeah um but yeah i've actually yeah i've never looked into regex uh i'm actually not sure either but i'm sure it's related it's it's still at the minimum bounded by like length of the words i'm sure um the okay cool so i guess thinking back to the original um prompt we actually still want to kind of try to do as much work as possible in the constructor to try to optimize isn't it as much as possible so if we can try to shift some of this work into the constructor store it in however format we want to optimize for um the is indeed function um yeah for sure i mean so i can just convert um so let's see we could do this we could convert the array into an object where keys and values are the same and then in is in dick so let's pretend we did that and we can do that real quick in just a second but then it uh we can say like if this stick word um i guess does not equal undefined then we can just turn true and that would actually yeah and that would be one in like the best case um and then if it doesn't exist then we can iterate and see do any of our keys um match and then at that point this would be uh an object values so in order to do that we would say const uh let's are you gonna still keep the right regex um we can revisit that okay um yeah because i feel i mean i can think of another way of doing that although it might not be like amazing in terms of uh time complexity but it would um i guess yeah we can talk about like the solution and whether or not you want me to implement that in just a second but we can say word map equals words array um well let's reduce that array into an object um where you know we have the accumulator and the word now we can say accumulator word equals word return accumulator now instead of a word ray we have we we essentially turn this like cat car bar array into an object of key is cat values cat key is car values var or car and then key is bar values bar and what the what did uh making that conversion do for us uh from a runtime perspective um so i mean we do have to iterate through the array once uh but essentially we are only now iterating in the constructor rather than iterating in is in dict which we would potentially be calling multiple times um so so the value of that is that now if the word does not have wild cards we can look um and and it is in the dictionary we can automatically um yeah then we could even go a step beyond that and say like if uh like word the word does not include a wild card returned false and then we would only have to like do the more um like the heavier operation if we are if we do have to uh match based on wild cards um what's the kind of big-o complexity of is indeed now so uh well it is i would say it's almost like an overloaded function at this point so like it kind of depends uh it's like the complexity kind of depends on the argument where um yeah like best case it's a one um and then to check if it you know if it has a wild card that would be o n and then if it does have a wild card then it would be whatever the o n plus or times the regex solution like equals so i guess um yeah is there any way that we can optimize this even for it for the case of a word being passed in as a wild card that contains a wild card let me think yeah so my i guess the first thing that comes to mind is to like um i don't know why like just delete like uh that tree like came to mind if we uh if we represented the words as trees could we do this in o and time uh can you describe what you mean by tree um yes let me let me think about this for just one second so that i can uh that uh to help also is um if there's a if it would help if there's only one wild card character um per word up to one i guess gotcha um so i'm trying to think let's see can we i know that we can get this to o n but i'm not sure if we can like is is o n the best case scenario here um is when you say n do you mean n as in the number of words in the array um no sorry the number of letters in the incoming word um yeah okay so how do we because right now our o of n is actually referring to the number of words so maybe we should use different letters to denote this but um right yeah yeah a is in the length of the word and then there's o of n where n is the number of words in the dictionary so reducing from n to k is a significant reduction gotcha see like how can we represent the setup words so that we can then actually only iterate through um the individual letters in the incoming word yeah and i'll say there's a there's a number of ways to do it um so um yeah there's uh you may not may or may not need to iterate through the letters in the word um there's definitely ways to do it that way but i would say you don't have to limit yourself to that um i mean i almost yeah like i feel like i nothing is coming to mind um if you [Music] yeah like less so i guess thinking about so let's imagine that the word only has um like the this a single star character um right now we have a pretty pretty uh complex or like uh we're using regex to match it um uh but if we're given just a single star character what are all the possible possible um words in the original dictionary how many possible like words are there in the diction in the original dictionary that it could possibly match um for sorry can you repeat the question yeah so let's say we're given is indict and we're given star a t right like how many possibilities are there like for words in the original dictionary there's one now but let's we don't we don't know what words there are right so like if you were to check words in the dictionary um um like for example this this couldn't be this word couldn't be uh bar right like because the star characters here not not here right so there's only a limited number of words that it could possibly be okay yeah i mean i'm not sure what you're getting at this is yeah this is not like a thing i've uh i guess yeah not a problem i thought of before um yeah no way so like um like this for example if this was a word like this if this word existed in the dictionary it would be a valid match gotcha so you just yeah you mean like how many literally how many possible yes okay then i guess 26 okay so if you kind of had to check that um what would be what would be the run time kind of involved in doing that check manually so in checking if i had to check star it how many possible um i mean yeah is is it 26 i guess yeah so so i guess yeah what would be if you if you manually checked all 26 of those uh of those letters yeah what would be what would be the run time involved um i mean i feel like this is a trick question but i mean it would be like oh 26 which we can almost like just say it's constant time right yeah um yeah pretty much and it's if it's still bounded by the the length of the word k but um but yeah essentially um because it's a fixed number of checks um but i guess like yeah to to kind of um push us further anything i here i think i see what you're getting at so i mean i think i'm not i'm not positive okay um but would that mean that we can just it's not quite brute force but just iterate through every potential word that for instance star at could be yeah check that against our dictionary yeah um that could yeah that's like one potential solution um yeah and i wanted to ask actually to to actually push push on this further is there a way that we can actually further optimize this such that we don't even need to loop through that like is there a way that we can get something stored in our dictionary such that we all we have to do is a very simple lookup something stored in our dictionary and thinking about like cat for example um thinking in the reverse like what are all the possible inputs that we could get in is indict that that would be a valid match for the word cat um like star a t c star t and c a star and can you use that use that in some way to try to shift as much work as possible into the constructor um yes yeah i mean it feels i could be wrong because like again this is not a solution that i've necessarily thought about before but like it feels like a lot of work in the constructor because we're essentially creating like a dictionary of every possible permutation for the wild cards but let's do it whatever okay so if we store um the wild yeah stored that way what's kind of the space runtime space complexity of each constructor and isn't it no um so it would be the length of the words array and the word they'll yeah like now it almost depends on the words right and the individual uh words in that array yeah um so yeah like as you mentioned earlier it'd be like oh like n times like k um but it does give us then 01 for is indict so cool i mean i'm down let's do it yeah let's do that okay so it's sweet um so now we have our word um essentially our word map is going to not only store the word but then also um let's say word split um for each letter and i so let's think i guess we don't yeah so we need um a partial word is word partial word at i is a star and then back and for what it's worth this doesn't need to be the word it can just be true so now we're going to say partial word equals true cool and then this will no longer work um let's just verify that i'll treat you false you cannot assign to hmm to read only property zero of string okay um weird i thought you could do it let's see oh yeah no that's not gonna work wow cool now i'm going to get tripped up on like literally modifying one word or one uh character in a word um let's do you mind if i just like look up screen is there like a replace character at um can we slice um cool so we want essentially to say like [Music] um i'm actually going to do this in console here so we're going to say var word equals hello start so [Music] so we actually want end to be i plus one um can you still see my screen uh i can but you might have uh made this window smaller to to look up resources oh gotcha here let's see if i can do that again cool is that working yeah it's good um so let's see so i'm trying to figure out let's see i plus one and let's just console log [Music] nice cool so then we want cons partial equals template string start star and and does this work true true and defined undefined so we actually want this to be or there we go hey sweet nice uh got it to work it's always a simple thing to get um yeah maybe we can try one where with the like a valid wild card input that actually should return false um so sure okay cool uh yeah looks good um and we don't have to code this version up but i guess as a final twist to this problem how might you adapt this algorithm to work if there were any number of wild cards that could come up in the is indict function um yes so i think that you know like building every permutation and storing that in our dictionary just might be like it might be a lot so if there were if we had to support multiple wild cards i'd probably go back not to like a regex necessarily but just something that like iterates through the letters in the word and i guess the idea that i was playing around before was like could we make like some sort of object like this and like honestly like i don't know if this would work or how i would go about like actually implementing it but essentially like building like a character map of like the words and um like so i think the the example like explains it better but so for instance um it's like true or something or just yeah like some you know to actually have it be an object um that is valid but for instance like cat and car could be combined into this object of like c a t uh you know c is the first letter a second t is the third that's when you get a wild card how do you look it up then you would have to just like i guess skip it and potentially look up the next character like find the ones that have the next character in there um i feel like that might be i don't know if that would give us like an actual advantage in terms of time complexity um if there's a lot of wild cards you'll have to do like a lot of splits of potentially up to 26. um yeah no that's a really good point i mean yeah like is there is there eventually like a set of uh requirements where just like iterating through you know the words in the dictionary like character by character like eventually becomes more beneficial yeah so the one one thing that you can to build on top of what you were building with the object you could actually have an explicit star character which essentially is like very similar to what we did here um in in storing in a in a dictionary or a set um but instead of having just like cat you could also build up all the like versions where each each letter also has a star so that you can actually just step through um yeah that's like one thing that you can do but then also like building up the um the the the dictionary um of all possibilities is obviously not probably something we would do in practice but um for the purposes of this um exercise could also work because it's still of one um right yeah well cool um yeah i guess that was the that was the problem uh yeah would you would you think of the problem um yeah i mean yeah it's super interesting i um i don't know if i would have come to the conclusion of initializing the dictionary with the wild card um on my own um i feel like yeah like the the trade-off there of building this potentially like very large object um up front versus and getting that 01 lookup time in the is index function and you know just having the is index function have to do a little bit more iteration um yeah for me it's like i i don't actually know yeah you're trying to optimize both right right right um but yeah i know like once once i it obviously took me a second to understand like the the solution that you were proposing um but yeah like once i got it i was like oh yeah of course we could do that uh so that's yeah i'll definitely like keep that in mind whenever i'm doing like um string manipulation stuff in the future um yeah fun fact at albert i worked on a text editor like quite a lot so i and that was very like regex based so i always were really fast at implementing records i was like usually like people don't try to do that because they assume that syntax was gonna trip them up too much um you just like busted it out yeah i know yeah worked on a text editor for a very long time um but i mean so that solution to you know i would have eventually like if if i didn't know regex i would have just iterated through each character and been like you know does any word have uh you know like does it start with a c at this index or um but like the time complexity there would be like absolutely garbage yeah yeah because we'd essentially be like iterating through every word in the in the setup array yeah yes yeah yeah yeah how did it go i think it went um pretty well um um i have lots of comments though should i like um yeah should i just go through them yeah i was typing up some things i wanted to say afterwards but um yeah to me it was very clear that um you know dan was very fluent and comfortable in javascript which is just a really good sign like um he used pretty like javascripty ways of of structuring his code which um you know like i feel like when i interview some some really junior people it's like um i feel like the you know i see like standard for loops and and like just more verbose code and so um the code was really fast and fluent and to me that was um probably the thing that would make me um lean towards yes because like clearly this person knows how to uh write code in production so i think a few kind of comments and you want me to do this here and not like later right yeah i'll show them to come and you guys can talk afterwards okay cool yeah so i think um to start from the very beginning um there's uh in the behavioral section i think i actually probably would have gone typically pushed more in a in a real interview but i did want to focus as much as possible on the coding portion i think that um i think one of the points i wanted to make is anytime like there's like really short periods of like employment like you're always going to be asked about it it's not a problem but you're going to need to explain um and i felt like the explanation was slightly negative and i always think that you should try to frame kind of what you wanted out of the next position rather than what you didn't want from the current position like you can always make the exact same statement more in the positive um sense um but i'm talking about glass store yeah yeah okay yeah um right like instead of saying oh i didn't like this about uh glassdoor um saying like i was looking for a code base that did more x um instead of like i wanted to get away from codebase that did y um so that's like i think just a very easy shift to you can always restate anything that's negative to the positive by doing that um but i don't think it was extreme so totally fine just a little note um i think during the uh coding portion um i felt like overall one of the weaker points of the interview was actually just actually going into code quite quickly so there wasn't a ton of like collaboration and um and questions ahead of like each each segment where we coded i felt like every time i presented something it went to code pretty quickly which meant that i didn't have i wasn't able to kind of guide directionally like it because he just started coding right away so a couple examples are um there's like some things where they're like um kind of edge cases weren't clarified for example like with string questions like asking about case sensitivities like um one that's that's good like do you consider like capital cat the same word right things like that um and kind of aligning on approach before going to code for example with the regex thing it's like um you know it might take a few minutes um the good thing is he did it really really fast so i actually don't think it hurt him at all and in fact it was impressive i was like wow you actually got it done because normally i might have advised like oh let's not we don't need to go down that route but then uh how quickly he did it was actually ended up being impressive so um i think maybe more aligning more questions could have been helpful um and in general like this particular question the one of the reasons i like it is actually there's just like a lot of different optimizations that you can make and there's a lot of analysis that we can have in conversation that's outside of code so um and then um i wanted to point out one particular kind of segment of the interview which was um the the i think an inevitable trough that every good interview i think has which is when you're totally lost um and how you handle that i think is one of the most important uh like behavioral like pieces performance wise that you can have and um i think dan did pretty well there but um i think i think it was kind of like neutral maybe well like i think there was slight frustration okay i haven't seen this type of problem before um and yeah i think that um i think just going into every interview kind of like with the expectation like i'm gonna be in a moment where i have no idea what to do um and just be ready to like kind of like have a positive attitude working through it rather than um like hey i don't i don't know um but again i actually don't think it was extreme overall i would have gone yes in this interview these were just some minor flags and then the impressiveness of just the execution speed and and um and uh kind of cleanness of the code uh generally um kind of clearly puts this in a yes bucket for me okay uh that was a lot of a lot of really good feedback um i know dan personally is gonna really appreciate that uh so i definitely wanna talk afterwards yeah that's all awesome well i guess i'll maybe see this after so yeah he'll see it for sure um so this is kind of like a mock position for a fake company right and it was a practice interview for more of a senior level position correct i i suppose yeah i was always what i was thinking in my head but yeah okay so i guess you know from dan's performance and how he did with the interview um what kind of and what level of positions do you feel like he would be qualified for in this company so i would say that coding interviews it's really hard to place people into seniority buckets based on the coding interview if i was doing that or if i wanted to do that i would definitely have to push a lot more on the behavioral portion of the interview um so there's certain types of interviews where like the expectation is is more split um this was primarily an algo interview which usually is like maybe 80 to 90 like just coding um very light questions but i think there's some interviews where it's like you know 20 to 30 percent maybe behavioral and we get more in depth in a particular project um so and i think more senior people that like will will face that more um the other thing is um system design interviews are better at judging seniority i think than just the coding um but i would say that based on like the resume alone but then also kind of like the fluency of the code and how like clean the code was like like gives me indications that this person seems to have worked in like a high quality code basis before and is really like solid so yeah i would i would say there's not a lot of signal on like seniority um uh but you know i would say that this this passes the bar for um like a seniorist level coding only interview and i wouldn't rely on other interviews in the loop for other skills important to senior engineers okay all right well thanks so much sophie i'm going to toss you out and bring him in stick around for a little bit if you can and we'll bring you back in all right how's it going dan hey yo can you hear me i can loud and clear cool so how'd it go um so i think i think that um since here i'll say this when i when i can actually like accomplish a task in any way shape or form be it like brute force or most optimal i tend to feel pretty good so so yeah i mean i feel i feel like i did a fine job um especially given that you know we were definitely trying to like um do a task and like the i guess like the bar for like most optimal being like oh one for this type of problem just seems like you know high and one that i didn't like necessarily get to without help but like the fact that like we were able to proceed through the interview and kind of like knock out some of those uh initial requirements um yeah it gave me like a pretty good yeah i feel i feel good um i think it's funny because like once um you know like there was that moment where uh sophie was kind of explaining or like almost like leading me to that uh most optimal solution and it was like hard to like she clearly like knew what she was talking about and she you know like she had this idea in mind for like a way to do this and like what ultimately ends up being like um 01 which is awesome um but for me it was like oh man like what's she trying to say like i uh you know it took me a second to get there but yeah like once once we got there then i was like oh cool i understand what you're saying and that's what's really funny about stuff like this because like it's like the concept is the hard part like writing the code is i mean yeah at this point it's been yeah i've been doing this for i've been writing javascript for long enough where it's like i can translate the concept into code but if i don't know the concept well i'm going to struggle um but yeah no i felt really good about it um yeah and i was just actually thinking of just like oh what other ways can we do this um and yeah i feel like i thought of an interesting one i might ask sophie what she thinks later okay that sounds good and yeah i'm glad you did struggle a little bit i knew she would be the person to challenge you i knew she'd be perfect for it and you know a lot comes out in an interview and just even like how you handle the situation even just you know working with her to be able to figure out the optimal solution that she's aiming for and how you go about it uh it's really interesting to see that um because a lot of people struggle with that concept i think a lot of people are gonna love to you know watch you work through that um but what are like what's one main thing that you can improve looking back at your interview um so let me think i mean i think i kind of hinted at this towards the very end when sophie asked how it went but i have like you know you tend to fall back to the tools that you're familiar with um so to be honest i don't know if i would have come to the um you know dynamically building a dictionary with wild cards included um because like that's just a concept that i haven't like thought of so i think just like trying to broaden the scope of potential solutions for stuff like this um would be helpful for me because it's you know it's one of those things where like you don't know what you don't know um and now i'm like oh cool yeah like you know this solution makes sense i can probably like you know i'm likely never gonna have to solve this exact problem in the future but one similar to it might come up and you know if performance uh is you know super paramount then yeah maybe like doing a lot of upfront work so that you can get those um that impr improved performance down the line might be like a good way to think about things and i feel like this definitely taught me that because like even with the original question you know like my mind was immediately like why do i need a setup function like we can we can literally just take the array do a do an includes or whatever but like yeah like maybe on isn't the best uh solution like maybe there's an actual like benefit in in having this be like oh one you know um but yeah no i think yeah that was like probably my biggest takeaway okay all right um and i'm gonna share the feedback that she shared as well um like i said it was fun to watch so uh i guess one more question for you going through this interview what impression do you feel like this interviewer gave about the company that she's recruiting for um so i mean if i was interviewing for a like front end position um i think that this might be like you know not the most ideal just because like this is not very like fun and related and it's very like it's super ago heavy but that said um i think that this kind of question to me like suggests that they're looking for people who have like a very strong understanding of um like fundamentals um and it's definitely i mean it it not gonna lie it was a super interesting challenging problem um so like i had fun with it also the general i guess the general format i enjoyed um it was very like you know collaborative um which you know made me think that like the person that's actually interviewing me is also like you know highly technical which is always appreciated um yeah i think yeah if i had any feedback it did seem like we were i guess like striving towards a specific solution and it was maybe like more difficult to like i didn't i didn't know that up front and maybe would have rather like you know been told that a little bit more explicitly but i mean overall i think i had a really positive experience that's the end of the interview if you liked it please consider liking the video it really helps boost the video and the algorithm and i really appreciate sophie and dan for doing this it's really hard to do something like this on camera in front of thousands of people so you know props to both of them but uh you know sophie is the ceo of formation and you know what they focus on is helping early software engineers prepare for kind of like mid to senior level roles and technical interviews um especially harder to get into companies like google lyft etc so you know if you feel like you need that extra prep feel free to check out formation maybe it's for you maybe it isn't but check them out uh but either way i'm gonna go ahead and link their socials in the description below at the very least i'm probably gonna link their linkedin so you can connect to them there let them know what you think but more importantly uh we're probably all gonna be checking out the comments so please leave a comment let us know what you think of it and if you want to see more mock interviews like this let me know as well thanks for watching everyone and i will see you in the next podcast episode [Music] just see everything
Info
Channel: DonTheDeveloper
Views: 460,551
Rating: undefined out of 5
Keywords: senior software engineer mock interview, senior software engineer interview, senior software engineer interview questions, senior software engineer interview google, senior software engineer interview microsoft, senior software engineer interview amazon, senior javascript developer interview, senior javascript interview questions, senior javascript developer interview questions, senior javascript engineer interview questions, donthedeveloper podcast, donthedeveloper
Id: yju4zwKSriI
Channel Id: undefined
Length: 64min 13sec (3853 seconds)
Published: Mon Nov 22 2021
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.