As someone who is poor in programming, there is something beautiful in seeing someone program so eloquently, like how we write paragraphs for a nice essay.
@@مجتبى-ط2ه there are different types of learners... visual, audio etc. Textbooks aren't for everyone. I myself learned by taking multiple DSA courses on Udemy and Coursera and leetcode. Not a single textbook... programming books are boring a f
One thing to note is that Kylie Ying is an MIT alumna with both a bachelor's and a master's degree in Computer Science and Physics. This speaks to her exceptional intelligence and talent. Most interviewers (except perhaps those at FAANG companies) don't expect candidates of her caliber, so don't feel pressured to measure up to her level. She is truly remarkable.
@Joe-ku1kohi. I am sure you did not meant to come off as condescending, but if you read your comments with an open mind, you will understand how some may interpret them so. This is one of the problem the industry has, a lot of us lack the social awareness of how we sound to others. Regarding the video, I think she intentionally approached this as she thought a first timer would.
I have a feeling that the "exceptional intelligence and talent" would have been judged to be an "unworthy candidate" in a lot of real-world interviews due to her second part of just fumbling about in the algorithm question. A lot of interviewers, especially those seeing a lot of potentially better candidates (i.e. handling the software design question better AND solving the algorithm question easily), would not have bothered hinting and edging her on as here.
As a noob who literally started my journey yesterday I understood nothing, but it's pretty cool to see what someone who already knows her stuff looks like. Hopefully when I come back in a few months eveything she is saying and doing will make sense to me. So far I'm loving it, though.
Interviews like this are a breath of fresh air. I think being able to design a solution to solve a functional problem is a great skill set to have as a software engineer. I get so tired of seeing nothing but LeetCode type questions for software engineers. I’m not saying that solving those are easy, because they are very hard. But architecting a solution to a problem like in this video I find to be more pertinent to 99% of realistic situations in the business world.
I have an honest question, Isn't everyone in the coding atmosphere going to be fucked because of AI? What is it that seperates a coder from a robot that can basicly do the same thing?
Because im seeing millions of people lose their jobs because of AI that are involved in similiar coding fields, and no dude i havnt tried it im not AI what kind of question is that ahahahah@@stanleyching123
@@rosspayne5099 AI is comparable to the first language compilers and interpreters translating into machine language. These efforts produced mediocre to average code. AI delivers sub-par to modest regurgitated text and code from across the web. Code snippets rarely have references, so malicious actors can blog and tag for SEO supremacy, delivering malfunctioning and negative results.
@@rosspayne5099 Oh look. Another example of AI/crypto bro pseudo-intellectual archetype utterly failing to comprehend how the underlying mechanism of the tech they raved so much about even work in the first place.
It's like being a fly on the wall of another interviewer, seeing the questions asked, solutions proposed, and feedback provided. This has changed the course of my life and in how I plan to solve problems moving forward. Great video!
Great video! I think it would also be great to see several people participate in the same interview. Thereby you could see how different individuals approach the same task.
This held my attention from start to finish! I like how she was explaining her thought process while she was writing the lines of code. It was fairly easy to follow along.
that's what you're supposed to do. if you're just quietly writing code, the interviewer's gonna fail you whether your program works or not. they mainly ask these to hear your thought process of how you solve problems.
This is extremely helpful. When I’m doing any kind of code it’s just for myself. I speak out loud what I’m trying to do, and have a notepad next to me, but coding a project for someone else does take a lot of fine tuning to understand exactly what they want. That requires real time communication.
I've been working as a developer for a year now and it's very humbling how she can mention these best data types to provide for these objects. Things like dictionary objects are still new to me.
I actually did do a follow-up after the interview once. It was my first job and I had to present my pet project.. and it did not load.. for the whole hour and a half I was trying to run it in parallel answering tech questions, but no luck. After I finished the interview I had reloaded the laptop and the project ran okay, so I made a video of it working and sent it to the interviewers. I got the job!
In the library class, the collection of books should be a dictionary from Book : active_page_number, that way a users library would be full of books and the page they're open too, along with an active book. That was what the interviewer asked about too! Just in case anyone else was wondering.
Isn't Everyone in the coding department going to be fucked hard because of AI ? Honest question, what seperates someone who can write code and a robot who can do the same thing?
@rosspayne5099 , AI to coders is like Tractors to Farmers. Useful tool to handle things efficiently but without the farmer the overall job doesn't get done.
@@rosspayne5099 If you've tried coding with AI they never work well in bigger projects, you can use the structures and stuff but ultimately there is a lot of tweaking to do
I am so jealous about how Kylie been able to express her thinking process this clearly and how quickly she came up with the solution. How long will it take to be as good as her?
you should be much better if you want to get to faang, there you are expected to solve two leetcode hards in ~40 minutes, and this dp task was at most medium
I haven't had interviews in English and the video is really helpful for me. I've never had interviews like this, so, I'm really nervous cause I'm preparing for interviews now. Thank you! "Don't write down without saying anything" I will keep it in my mind!
Wow i actually find this challenging, but very interesting! Thank you for giving me an insight of how technical interviews are done! I actually thought it was a lot harder where they observe you on how to build it from scratch and make it work in the end!
Yeah, this was very cool to see, and quite challenging when your perspective on interviews is to ace them. I think what was most important here, is that the candidate explained her thought process out loud every single step of the way, so that the interviewer can follow along 100%, and even if the interviewer starts to not follow, maybe ask every now and then if it makes sense. I think I feel more confident after seeing this video bc it proves that interviews should be a conversation on implementation, drawbacks, pros, larger questions, modularity, and less on getting a right answer...because designing a system isn't something you can get right 100% in the real world.
Im literally not even in uni yet, and i want to do computer science. Im doing maths a level right now, and watching this has gotten me so exicted because it truely is its own language. Ive also always loved solving problems that can have multiple unique ways of getting the same result (hence why i love maths), and ive just realised coding is that exact same thing!!!
Great job on delivering such insightful content! This video provides valuable insights for developers preparing for technical interviews.We truly appreciate the availability of resources like this that help candidates come well-prepared for their interviews. It's fantastic to see the community coming together to share knowledge and empower future employees. Keep up the great work!
I'm so subscribed. What an amazing resource. I've watched a bunch of interview prep videos, but this one really helps put it all into context by performing it.
These mock interview videos are extremely useful. I've one request, though. Can you please make a video on how to type quickly on a keyboard without looking at it. Such a skill can, and will actually, significantly increase every programmer's productivity. Please consider my request!
There are alot of sites where you can practice your typing, and it will eventually increase your speed. And the question about typing without looking at the keyboard, it is just about muscle memory. So the more you practice your typing the more you will get better and quick at it.😊
As someone who’s only a few weeks into my coding journey I’ll have to come back to this when I have a better idea of what she’s coding, I understand some of it but a lot of this like hieroglyphics lol. Awesome job tho and very cool to watch.
i will never work for any company that asks these types of algorithm interview questions, but i do appreciate seeing how people go about solving them :)
i agree with you. i've been working as a coder for almost 21 years for now and never wrote a code to solve anything like a "plagiarism" algorithm question. This is not a real world question. they are just questions for satisfying their egos.
side note: 9:21 dictionaries are ordered since python 3.6. regardless if you'd want an ordered dictionary, you have always have the ordered_dict as an option!
Oh crap... Went into this thinking it would be staged. Didn't think they would let her fail so gloriously on such a simple question. Kudos to her for putting herself out there like this.
The use of Lists was actually pretty cool. I was thinking of a JSON array, but then Lists are kind of way more powerful due to their incredibly useful methods and as said in Head First Python book, "Lists are arrays on Steroids". Nice Mock Interview. I just want these to go on.
yea when they said 'collection' of Books I automatically defaulted to std::vector or Vec or []Book or even Book* if ur feeling fancy and want to use a static array
Learned so much from this video. I am a fledgling programmer (just started taking the 200-series programming classes) still trying to learn a language and practice my logic building skills and this helped tremendously.
After doing a lot of leetcode and have been destroyed by edge cases. Not adding an edge case for page turning and out of bounds index error is killing me
I never understood the point of technical interviews "testing your coding ability." Nearly all programmers will have a portfolio showing what they're capable of. I shouldn't have do it again under the gun just to back up my portfolio. If you're going to test my skill in a technical interview, don't ask for a portfolio.
@@user-pl6hy3km6s *_true but they also want to make sure you haven't just copied others people work_* If this is the reason, then every software engineer in the field needs to be fired. I don't know of any software engineer who hasn't at some point referred to StackOverflow for snippets of code. It's inefficient to expect coders to rewrite code that already exists, especially if it's going to serve the exact same function. Even if the coder DOESN'T copy it from someone else, the CODE will still end up looking identical (apart from perhaps var names) because languages like Java, JS, CSS, Python, etc will only work if code is written one way. *_and they also want to see how you handle under pressure_* Yet again, this is a pointless test. Nearly any job is going to put the worker under pressure at some point. People apply for jobs EXPECTING to be under pressure occasionally. If they knew they couldn't handle the pressure, they wouldn't be applying.
90% of junier engg. showing as their project in portfolio is something they made my following some random tutorial, but when we give a problem, they lack ability to solve problem even if they know the syntax......
@@vaisakh_km It's still not an accurate test of their abilities. Your "test" is testing _how quickly_ they can come up with a solution, not they're actual problem-solving skills. The real world doesn't work like that. When you encounter a problem in coding, it's not like you have a team of executives peering over your shoulder expecting you to come up with a solution on the spot. That's asinine. Unless you run your company like a slave labor force, the actual employee is going to need time to ASSESS the problem, and then formulate possible solutions (some of which may not even work). You're expecting the potential employee to be a walking encyclopedia of all languages, situations, problems, solutions, etc. The person you're looking for doesn't exist, bud.
@@sixstanger00 couldn't have said it better. This method just makes the person so anxious that they can bomb their interview and lose their confidence.
The design misses a couple of things to consider: 1. if we are representing digital books, how a book’s content is paginated changes quite a bit depending on screen size and it isn’t captured here. It also has an impact on the interface like page turns, etc. 2. The ID was simply hand-waved. The emphasis was put on titles of books being possibly unique, but since no author is captured, it’s even harder to differentiate the content between two books of the same title. There also isn’t a time stamp to capture when a book was created either. There are some interesting ID schemes out there that can be globally unique and capture time - snowflake for example. 3. what is the point of having a display_page method? It wasn’t a part of the requirements. When crafting an interface for something it’s intuitiveness for other developers lays heavily in whether another dev can understand what they’re interacting with and what its responsibilities are by simply looking at the methods. Encoding the word display into a method suggests that this object has view-specific concerns. For the library design, some considerations that were missed and not asked about: - asking how the library is used: humans won’t be trying to remember a machine-generated ID. So how do we obtain the ID for a book? I wish she would have asked about a search interface - where did the remove book from collection come from? It wasn’t a requirement - this code example revealed some inconsistent API design details: encoding redundant information into the methods, e.g., add to collection (the library is a collection) and the method can be simplified to add or register, and secondly, command of the language: Python has setter and getters via property decorator such that both are of the same name without having to encode “set” into the method name. - the library has view-concerns that are owned by the book In this interview, Kylie kind of just declares everything in a “matter-of-fact” way. It comes off confident, but gives very little opportunity for the interviewer to interject as she doesn’t spend time asking the interviewer whether something seems amiss or overlooked. There are a lot of trade-offs being made and some anti-patterns that have real-world maintainability and extensibility impact with the current design that isn’t considered - the auto-increment ID gen scheme will break should we need to shard. Also what happens when we have books with other attributes like non-digital? This means the book class now gets modified? Lots of considerations. Again, perhaps not required of a junior, but the interviewer should’ve asked and at least forced the interviewee to pivot and see how they handle that, and not simply check if their views of the world aligned. However, as a demonstration of how real world interviews are, this is probably pretty run of the mill OOP that would get a pass and there are definitely a few solid considerations in the choice of primitive data types used, although I would have liked the interviewer to push back and ask why one over another more often. He simply just took what Kylie said as is…
I was thinking from the start, that you would never store this data in the app, such a bad design. Why not use user_ID and private key to access your database of books and user "libraries". You can store user settings locally, maybe even last pages but storing the books would just compromise your merchandise...
Creating a new book everytime we insert it in a library, does it means that me and you reading the lord of the ring are reading a different book? I can see many principle of object programming are not known by the candidate.. it's ok for the interviewer to go on and passing in a practical implementation.. but the first part was not sufficient..
I think it's very important to point out that at 33:45 the explanation that Kylie gave was incorrect in regards to what Keith meant when he used the term sub string. Keith later indirectly clarifies at 44:10 what sub strings are meant to represent, which to my understanding are the individual words in a string aka "Sub Strings", not the individual characters (char) of a word, subsequently also not the words that can be created from the individual characters to match words in the comparison of String A to String B. This can be very confusing to viewers who are not familiar, and I think requires further re-clarifying. Fantastic video, really loved the example shown for demonstrating OOP, and the approach to writing out each task and breaking down the solutions very specifically. Thank you for the video.
It's definitely the characters not the words but it's not clear why she is saying non-consecutive occurences of the same characters are substrings too. That's just not true.
Great mock interview session! I loved how you broke down each part of the interview, especially the dynamic programming portion. The discussion about handling both object-oriented design and algorithms in a single interview is super insightful, and your emphasis on making the interview collaborative and conversational is encouraging. Thank you for sharing such valuable tips for tackling technical interviews!
I value and appreciate the diverse approaches individuals take when conducting interviews. However, having served as a developer manager for years now, I have consistently chosen not to conduct live code interviews. In my experience, I believe that relying solely on this method may inadvertently lead to missing out on exceptional talent. Instead, I place my emphasis on specific concepts/criteria, such as: - Could you provide an explanation of Domain-Driven Design (DDD)? - Do you practice Test-Driven Development (TDD), and if so, can you elaborate on its significance and its relationship with SOLID principles? - And so forth... By focusing on these key aspects, I aim to identify and engage with candidates who possess a deeper understanding of fundamental principles in software development. Anyway, my two cents.
deeper understanding of fundamental principles? Software development has been active since way before those concepts have existed. You're actually missing on talent by focusing on those concepts. An experienced software developer can adapt to any form of development. To be honest your way of interview is equivalent of making a test after doing a course of TDD.
Going character by character to detect for plagiarism between two books sounds over the top. Have a globalSum var that keeps track of the highest number of common words between books. Indincies is a tulple that caches the indexes of the two books that globalSum comes from. Before going character by character, I’d have an array of objects for each book where the keys are the individual words in each book and the values are the number of occurrences the word shows up in the book. Then iterate over the array from i ==> [0, n-1) and iterate over the keys in array[i]. If the key is found in array[i +1] then add the minimum value between the two objects to currentCount. When we’ve finished checking all the keys, compare if currentSum > globalSum, then update globalSum to currentSum and indexes to [i, i +1] Return indexes when we’re done iterating over the array of word_count_objects
I must be closer to my goal then I think because I was able to build this particular assignment very easily I’ve been learning programming for a year and a half now about to start the job search soon!
Thats great to here! I am on the other side of the spectrum lol. I am learning CSS and HTML 😢 This turns my world upside down. I wish my MIS BS taught me more.
Instead of giving dynamic programming exercises that are completely irrelevant to the job, interviewers should make the effort to come up with more realistic problems have some connection to the job.
I felt like this was basic OOP nothing out of the ordinary. Maybe in a job you will use a state management library and learn some libraries or even use a framewrk like Angular that already uses OOP practices in its opinionated framework, because in reality no one does this from scratch but it does not hurt to show you know the basics. Afterall this are the basics
I Think a better solution in the dynamic programming question would be to split the content in each book and match the same words, if the next word is the same, it would keep on going until it finds or detects a sentence or paragraph that is the same in both books, and of course remove any punctuation and lower everything.
Why? The problems asked in this interview are pretty simple if you have done hands-on project before, which you are supposed to have if you are applying for a job by the way?
Good luck I can’t imagine myself personally being a computer science person it would definitely get me lost and give me a whole lot of anxiety if I have to do this to land a job.
Started Python a couple weeks ago, was interesting to see the way the scenarios were dealt with considering I don't even really know how classes even work yet lol
I'm in my second semester of OOP and I still struggle wrapping my head around things like class relationships. I think Most intelligent people if they put the effort in could understand what methods and instances of a classes are. However, to fully understand classes, you need a deeper understanding of object-oriented principles. Now I don't believe most people would comprehend concepts like abstraction, encapsulation, inheritance, and polymorphism etc... Its a very deep and complex topic that takes practice and practice.
I know this is a bit late, but the easiest way I found to understand classes was to, just a coincidence here, but think of them as books. A book has key elements to it, author, the content, published date, isbn etc, and those would be enforceable properties of a class, things that make the object, the object, in this case a book, a book. Right? Then inside a book, has chapters, think of those as methods, every chapter provides a function regarding the book, chapter 1 for example uses the content and starts the process of moving the story forward, while maybe chapter 6 is needed to develop a character a bit more, and all that information is there for you to reference. Think of that as class.method. You need to know about that guy from chapter 6? book.chapter6() will provide that for you. Now you have the blueprint of a book, all you have to do is initialize the object and pass it what it needs, write the author down, write the content, etc. Book hp= new Book(author, content, isbn, etc) and you can crack that thing open whenever you need to now to access it's contents, again, hp.chapter6(). Or a more realistic example hp.length() and your length method would just be like ```return len(self.content)``` using python. And to add on to that, for inheritance like above, book maybe more of a broad class if you will, but then maybe you want a short story class with the same type of functions as the book class. There's where inheritance comes in. The book class can be used as a parent of the short story class, where the short story has copied the over structure of a book, but it's still it's own separate thing so it can have some specialized methods as well. I'd keep going but I think you get the jist. It doesn't work great for encapsulation, but just wrapping your head around classes and understanding their purpose opens a lot more possibilities for comprehension for the other concepts.
I was really confused about the Book implementation up until 29:30. I thought I was crazy for thinking it wouldn't work with multiple users. Glad the interviewer addressed it.
I think it would be better this method handle the case when the current page is the last one. It might throw an IndexError if you try to access a page that doesn't exist.: def turn_page(self): if self.last_page < len(self.content) - 1: self.last_page += 1 return self.display_page() else: return "You are on the last page."
In my view, the last page read by the user should not be a field of the Book class. If we enter the last page read as a field of the book, it means that we will have to create different instances of the same book for different users of our application. By the way, the last page read does not seem to me to be a property of the book, but a field of the user in relation to the book. Anyway thanks, it was interesting to follow this video. It allowed me to get some practice on application design. I had a lot of fun with it.
@@alfonsovieyra9321 As far as I remember, I would have created a ‘bookmark’ map of in the user class to track the last page read for a given user’s book. In this way you can avoid duplicating instances of books just to keep track of the bookmark.
@@raccontiinformatici8580 That is the same thing I was thinking of. She totally forgot to take into consideration multiple users in Book app. Design is totally off If you ask me.
exactly my thoughts the last read page is per user and it shouln't be part of the book. It should be part of a user object more specifically user object have a of books with key being books (active / inactive) and value be last read page in that book.
For many experienced SWEs, I believe it's not hard to code it in a real office day. But walk through this question and code it in an F2F iview is significantly make it harder.
@@bakeery yeah lmao, "trust me I know this I just can't right now" is not very convincing. I hope experience will make me calmer, luckily I'm still studying.
@@hanac5586 you have to pass through this before getting an experience :) Once you know how stuff work, you can crack it, looking forward to seeing your interview 😀
Great mock interview! I agree with the testing and edge case comment. For example, adding a validate method to make sure the book was in the collection already before adding and deleting the book... and also a user class maybe?
As someone who've been on both end of interviewing, verbalising your thought process is very important in an interview - and Kylie Ying did great in that regard here. It's better to overshare about what's going through your mind (as long as it's still related to the matter of the interview 😛) than the opposite; if you're completely silent and suddenly stop doing anything, the interviewer can't read your mind to tell if you're just taking a break to think better about your solution, or if you're completely lost and don't know how to ask for help.
I wouldn’t be able to explain it and talk as good as her, but at least I also had the same concept going through this and slightly a bit different ways to go about making stuff! Other than that great lesson
I think a better solution for the algorithm would be splitting the string apart into a list using a " " as a delimiter and then comparing each word rather than using characters.
Thank you very much for taking the time for the test and the technical interview. Unfortunately, we cannot offer you the position at this stage, but let's keep in touch for future opportunities. I wish you success and the best realization in your career, don't give up, you have great potential for development.
Im so happy i understood every single bit of this. I first found this video years ago and was completely lost. Lol It was smart to introduce IDs. There are a few things i would've done differently (like introducing a book controller class, setting a boolean for the ids, etc) but overall my structuring would've been very similar. Great job and thank you for the video!
I didnt think my interview would go as bad as it did but boy oh boy was i wrong 😂😂😂 literally froze and looked at the screen for 5 minutes in dead silence they want you to be a full blown expert already prior to the job lol
Super helpful video. One thought that came to mind in the OOP Design question was, wouldn't it be better to store the "last page" or bookmarked page at the user level rather than at the book-level? The Book class describes an instance of a book, but can be read by multiple users. It seems it would be better to have a Reader or User class, which contains user-specific information like their library, their bookmarks etc.
The OOP part is easier than most of the one I got when I join interview as freshers. the Algo problem is a leetcode-medium. So I guess this interview is to find a person from new fresh to under 2 years of experience.
I think the biggest take away I got from this is to just ask a bunch of clarifying questions and hope your brain forms connections so that you can finally start pooping some code out lol
Classes represent BookViewer, Book will simplify and more loose coupled.. where Book is just a polo and viewer is more a utility for active new Book, turning pages, etc..
This comment is only for the OOP qu. I would rate her performance as a pass for a grad/junior role. She did a good job reiterating all the requirements, chose appropriate data structures, and the code fulfilled all the basic requirements. Some of the things that would've gotten her to a strong hire for a grad, maybe weak hire for mid-level are: - considering and handling error cases. e.g Book.turn_page() should gracefully handle turning the page on the last page instead of the current implementation which would lead to an index out of bounds error. Or checking the book ID exists in the library before setting it as the active ID. - considering the time/space complexities of the various operations, and how that is impacted by the choice of data structures - weighing the choice of book ID in more detail. e.g. int id vs UUID etc - asking more qus upfront or commenting about the extensibility of the design
One of the reasons I dont want to pursue a degree in software engineering or computer science is because of these ridiculous interviews. They're like tournaments and you're competing against way too many people.
@@Directgamez28 dont get me wrong iam a begineer and this is kind of difficult, but if you know OOP then its kind of just like a puzzle, a book has atributes and functions like title, publisher etc, and funtions like read() it kind of just makes sense you would have to make that into a class, a library is bunch of books, with maybe id's so makes sense thats gonna be a class, maybe its just me idk
The legend behind the coding problem is kinda confusing if LCS computation was the intended solution, because now that you have a function that computes LCS of two books it's nice but you still have a quadratic number of pairs of books, and the LCS computation is not exactly cheap, so it doesn't seem to be a practical approach to the original problem, I guess in real life one would do some K-gram matching or something like that. Also, traditionally it's a consecutive subsequence that's called a substring, not just any subsequence.
yeah my first thought was why do we do it on a character level. just get rid of punctuation and iterate over arrays of words would safe big time, but then again the solution to the problem stays the same. So if one doesn't know how to solve longest substring match it doesn't help that much either
More than an interview this seems like a scrum call where the project manager and his team member are discussing on the technical processes to execute real time projects in high detail. In most interviews I’ve faced so far your coding based mind set is judged once you progress to the final round. Not all software engineering job interviews are this complex and are conducted this way. Most interviewers are curious to know your significant contributions in the recent projects and how your acquired skill set can be applied to the application they are working on improving or innovating. Last but not the least how well do you remember the basics … the abcd of programming.
What level is this interview for? Junior or mid-level? The OOP part seemed a bit easy, but the algorithm portion was a bit more complex. I suppose I just need to spend more time on solving algorithms. Amazing video, very helpful to see the general idea and flow of such a dreadful process. Would love to see more of these.
i would say junior , there are many interview in youtube where you can see their problem are more complex but i think this would be fine if you are beginning about technical interview.
4:45 haha i basically made this exact thing for my own fun project to promote a book i wrote. i chose to implement the "display page" thing by writing a script that would get the next X words in the entire book - where it would estimate an average number of words per line and number of lines per page, then try to fetch as near as possible to Lines * WordsPerLine - rounding down. it worked pretty well so that page numbers could be independent from the book content, however it would often leave you mid-sentence with a bit of a gap before the end of the line which would look a bit weird.
I couldn't do this.... I had one interview like this and I failed. My own voice would distract my thinking process. I just don't work this way. I have to hear myself thinking in order to write the code. I also would have been distracted by the interviewer peering over me. Thank God not a lot of interviews go like this. Most companies have an online test you can take or ask you a bunch of multiple-choice questions. Just because you can't verbalize what you're thinking very well doesn't make you a bad coder, or are even a worse coder than someone else who can verbalize what they're thinking.
It's stunning that the interviewer didn't stop Kylie (about detecting plagiarism) straight! There were ONE key-word for the problem WITHOUT re-inventing the wheel, what Kylie did want to perform: IMPORT AI API and voilà! Otherwise, there's a classic string-analyzer #101 solution: regular expression libraries! That interview is surrealist from my point of view. It does NOT help people prepare for a tough interview!
you could simplify this further by creating a separate Page object that has a "text" and "number". Book should have an `isActive` parameter that the Library controls.
I am at 11 minutes into the interview and I realized 2 things. Yes maybe I am judging too fast but I think these are very important to point out. 1) Interviewee said, 5:56 "Let's make this window smaller so people can see..." What people you are talking about? You are in a job interview. This has to be a MOCK interview! Totally wrong representation. 2) She started very very wrong way to design the OOP system by classes and that is why she totally created wrong relations between books and users. First of all whole reason, you are creating a program is to access data. That is why first of all you need to design a scalable simple database context. You can use either diagram software or just an Excalidraw type of program. I started with this by stopping the video at 4:20 and after this database design, the actual program was over in my head. table: books model: Book * id: number * name: string * pages: number * users: User[] table: users model: User * id: number * name: string * books: Book[] table: Currents model: Current * id: number * book: Book * user: User * page: number
QUESTION: For Which level of job position can I expect this kind of interview? Will a job interview for an entry-level position look like this? Are job interviews for tier-I jobs (FAANG jobs?) look like this? I am switching from mechanical eng. to Java backend development by doing a boot camp so don't know the non-academic things about the job-market. Any tip would be helpful.
@@zerry4353 It most certainly is entry level, the OOP portion is pretty basic if you've a full grasp of OOP , the algorithm part should be understandable once you're able to do most easy questions on Leetcode, hackerrank, etc. I wouldn't quit though, there are definitely a lot of 'AHA' moments when programming. Sometimes problems or alogrithms that make no sense will suddenly seem like menial tasks once you've put in the work.
This is pretty cool....but honestly I would cry if the interviewer started with , "Let's make a book application". I learned a lot today
I think this is one of the easiest problems you can ask for.
@@paultvshow what's the next step up from this kind of question? Leetcode medium?
I have one coming up Thursday. I've been told to use LeetCode and go for medium and hard challenges. A bit overwheliming TBH.@@bacon5481
This is about as cake an interview as you can have
@bacon5481 most interview coding questions I noticed are leetcode medium level questions or you walking through building portions of an application
As someone who is poor in programming, there is something beautiful in seeing someone program so eloquently, like how we write paragraphs for a nice essay.
have you improved yet?
Do leetcode , read text books , leave tutorials
I’m great with hardware but suck @ coding.
What should I do then😢
@@مجتبى-ط2ه there are different types of learners... visual, audio etc. Textbooks aren't for everyone. I myself learned by taking multiple DSA courses on Udemy and Coursera and leetcode. Not a single textbook... programming books are boring a f
One thing to note is that Kylie Ying is an MIT alumna with both a bachelor's and a master's degree in Computer Science and Physics. This speaks to her exceptional intelligence and talent. Most interviewers (except perhaps those at FAANG companies) don't expect candidates of her caliber, so don't feel pressured to measure up to her level. She is truly remarkable.
@Joe-ku1ko or maybe you're just jealous? :) jk lol
I would say it was a pretty straightforward implementation
@Joe-ku1ko 6 years and you're that full of yourself? That's quite impressive
@Joe-ku1kohi. I am sure you did not meant to come off as condescending, but if you read your comments with an open mind, you will understand how some may interpret them so. This is one of the problem the industry has, a lot of us lack the social awareness of how we sound to others.
Regarding the video, I think she intentionally approached this as she thought a first timer would.
I have a feeling that the "exceptional intelligence and talent" would have been judged to be an "unworthy candidate" in a lot of real-world interviews due to her second part of just fumbling about in the algorithm question. A lot of interviewers, especially those seeing a lot of potentially better candidates (i.e. handling the software design question better AND solving the algorithm question easily), would not have bothered hinting and edging her on as here.
As a noob who literally started my journey yesterday I understood nothing, but it's pretty cool to see what someone who already knows her stuff looks like. Hopefully when I come back in a few months eveything she is saying and doing will make sense to me. So far I'm loving it, though.
What age are you starting?
you are learning in the worst date, interviews are wild now
@Fran-kc2gu I know, I wish I started to code when I was a new born
how did it go?
How you doing now
Interviews like this are a breath of fresh air. I think being able to design a solution to solve a functional problem is a great skill set to have as a software engineer. I get so tired of seeing nothing but LeetCode type questions for software engineers. I’m not saying that solving those are easy, because they are very hard. But architecting a solution to a problem like in this video I find to be more pertinent to 99% of realistic situations in the business world.
I have an honest question, Isn't everyone in the coding atmosphere going to be fucked because of AI? What is it that seperates a coder from a robot that can basicly do the same thing?
@@rosspayne5099what makes u think AI can solve this? Have u tried? AI can’t even solve my uni coursework and I’m in y1
Because im seeing millions of people lose their jobs because of AI that are involved in similiar coding fields, and no dude i havnt tried it im not AI what kind of question is that ahahahah@@stanleyching123
@@rosspayne5099 AI is comparable to the first language compilers and interpreters translating into machine language. These efforts produced mediocre to average code. AI delivers sub-par to modest regurgitated text and code from across the web. Code snippets rarely have references, so malicious actors can blog and tag for SEO supremacy, delivering malfunctioning and negative results.
@@rosspayne5099 Oh look. Another example of AI/crypto bro pseudo-intellectual archetype utterly failing to comprehend how the underlying mechanism of the tech they raved so much about even work in the first place.
It's like being a fly on the wall of another interviewer, seeing the questions asked, solutions proposed, and feedback provided. This has changed the course of my life and in how I plan to solve problems moving forward. Great video!
Great video! I think it would also be great to see several people participate in the same interview. Thereby you could see how different individuals approach the same task.
yeah, that would be interesting.
a perspective change would be fantastic.
Regarding the dp problem does not have too many approches since it is a well known problem
i love that idea
This held my attention from start to finish! I like how she was explaining her thought process while she was writing the lines of code. It was fairly easy to follow along.
that's what you're supposed to do. if you're just quietly writing code, the interviewer's gonna fail you whether your program works or not. they mainly ask these to hear your thought process of how you solve problems.
This is extremely helpful. When I’m doing any kind of code it’s just for myself. I speak out loud what I’m trying to do, and have a notepad next to me, but coding a project for someone else does take a lot of fine tuning to understand exactly what they want. That requires real time communication.
I've been working as a developer for a year now and it's very humbling how she can mention these best data types to provide for these objects. Things like dictionary objects are still new to me.
It is basically a hash map, in python it is called dictionary
Keep in mind this video is staged.
I actually did do a follow-up after the interview once. It was my first job and I had to present my pet project.. and it did not load.. for the whole hour and a half I was trying to run it in parallel answering tech questions, but no luck. After I finished the interview I had reloaded the laptop and the project ran okay, so I made a video of it working and sent it to the interviewers. I got the job!
what project did you do
In the library class, the collection of books should be a dictionary from Book : active_page_number, that way a users library would be full of books and the page they're open too, along with an active book. That was what the interviewer asked about too! Just in case anyone else was wondering.
Later this year, I will start a bachelor's in software engineering. I definitely need this!
Just lie and say ur transgender and non binary they won't turn you down no matter what if u failed the test
Lol
@@Adam-kk7nw 💀💀yk what this is probably true too especially in places like san fran
@@Adam-kk7nw modern problem require modern solution lmao
@@Stephen.c19 this made my whole day 😂 thank you
This is not just for the interview things, but also the code structure that was implemented so smoothly. Everything just looked like a roadmap👌👌👌👌👌👌
Isn't Everyone in the coding department going to be fucked hard because of AI ? Honest question, what seperates someone who can write code and a robot who can do the same thing?
@@rosspayne5099most probably, but my lecturer told us to embrace it, AI is inevitable, so we must learn to use it efficiently
@rosspayne5099 a bot writes code for instructions you give and you edit parts of that therfore your productivity is higher
@rosspayne5099 , AI to coders is like Tractors to Farmers. Useful tool to handle things efficiently but without the farmer the overall job doesn't get done.
@@rosspayne5099 If you've tried coding with AI they never work well in bigger projects, you can use the structures and stuff but ultimately there is a lot of tweaking to do
I am so jealous about how Kylie been able to express her thinking process this clearly and how quickly she came up with the solution. How long will it take to be as good as her?
Just be you
Some good practice time doing explanations while you're solving a problem coding, soon enough it will become hardwired in your brain.
you should be much better if you want to get to faang, there you are expected to solve two leetcode hards in ~40 minutes, and this dp task was at most medium
A CS as your first and only degree and a passion mainly for programming for the better half of your life.
I haven't had interviews in English and the video is really helpful for me. I've never had interviews like this, so, I'm really nervous cause I'm preparing for interviews now. Thank you! "Don't write down without saying anything" I will keep it in my mind!
you got it man! How did it go? or how is it going?
Me too, omg, so nervous for English interview.
I watch these whilst also learning Python too, so I can learn how to also communicate well when discussing thoughts and ideas.
Wow i actually find this challenging, but very interesting! Thank you for giving me an insight of how technical interviews are done! I actually thought it was a lot harder where they observe you on how to build it from scratch and make it work in the end!
Yeah, this was very cool to see, and quite challenging when your perspective on interviews is to ace them. I think what was most important here, is that the candidate explained her thought process out loud every single step of the way, so that the interviewer can follow along 100%, and even if the interviewer starts to not follow, maybe ask every now and then if it makes sense.
I think I feel more confident after seeing this video bc it proves that interviews should be a conversation on implementation, drawbacks, pros, larger questions, modularity, and less on getting a right answer...because designing a system isn't something you can get right 100% in the real world.
@@VGBNDGRL I do agree with you on the last sentence..
That was brilliant, it brought back some memories of the interviews I've sat in and went through myself, outstanding job!
Im literally not even in uni yet, and i want to do computer science. Im doing maths a level right now, and watching this has gotten me so exicted because it truely is its own language. Ive also always loved solving problems that can have multiple unique ways of getting the same result (hence why i love maths), and ive just realised coding is that exact same thing!!!
Keep it up!! Your intrest alone is a great quality to have!
Great job on delivering such insightful content! This video provides valuable insights for developers preparing for technical interviews.We truly appreciate the availability of resources like this that help candidates come well-prepared for their interviews. It's fantastic to see the community coming together to share knowledge and empower future employees. Keep up the great work!
Don't worry folks... most interviews are scaled to what the company is hiring you for. Don't be afraid
I'm so subscribed. What an amazing resource. I've watched a bunch of interview prep videos, but this one really helps put it all into context by performing it.
These mock interview videos are extremely useful. I've one request, though. Can you please make a video on how to type quickly on a keyboard without looking at it. Such a skill can, and will actually, significantly increase every programmer's productivity.
Please consider my request!
There are alot of sites where you can practice your typing, and it will eventually increase your speed. And the question about typing without looking at the keyboard, it is just about muscle memory. So the more you practice your typing the more you will get better and quick at it.😊
As someone who’s only a few weeks into my coding journey I’ll have to come back to this when I have a better idea of what she’s coding, I understand some of it but a lot of this like hieroglyphics lol. Awesome job tho and very cool to watch.
how u doing now
i will never work for any company that asks these types of algorithm interview questions, but i do appreciate seeing how people go about solving them :)
how do you know they wont ask you this?
@@TozzaYT if they do i'll just run away 😂
Why are these interview questions bad? Just curious
@@MiltkaStar i think one problem people have with them is that you almost never have to do these leetcode style questions in a real job
i agree with you. i've been working as a coder for almost 21 years for now and never wrote a code to solve anything like a "plagiarism" algorithm question. This is not a real world question. they are just questions for satisfying their egos.
side note:
9:21 dictionaries are ordered since python 3.6. regardless if you'd want an ordered dictionary, you have always have the ordered_dict as an option!
Oh crap... Went into this thinking it would be staged. Didn't think they would let her fail so gloriously on such a simple question. Kudos to her for putting herself out there like this.
The use of Lists was actually pretty cool. I was thinking of a JSON array, but then Lists are kind of way more powerful due to their incredibly useful methods and as said in Head First Python book, "Lists are arrays on Steroids". Nice Mock Interview. I just want these to go on.
If you are told to use python, you gotta ABUSE the hell out of lists!
@@onemoregodrejected9369 damn yes. LISTS are for abuses 🤣🤣🤣🤣 without regrets.
yep I added that to my background
yea when they said 'collection' of Books I automatically defaulted to std::vector or Vec or []Book or even Book* if ur feeling fancy and want to use a static array
@@anon-fz2bo pointers 😂 not unless it's mentioned.
Great, now some way to handle the crippling interview anxiety.
I just love Kylie's workflow and mental clarity!
damn, she's so good at speaking thoughts and exchanging information
Okay, I realize software engineering IS for me😂 loved the discussion, and looking forward to talking CS with people.
Learned so much from this video. I am a fledgling programmer (just started taking the 200-series programming classes) still trying to learn a language and practice my logic building skills and this helped tremendously.
After doing a lot of leetcode and have been destroyed by edge cases. Not adding an edge case for page turning and out of bounds index error is killing me
failing because of edge cases in leetcode makes me feel really stupid because usually you just need to add a single if statement to pass the test
lol ol' boy traumatized
I never understood the point of technical interviews "testing your coding ability." Nearly all programmers will have a portfolio showing what they're capable of. I shouldn't have do it again under the gun just to back up my portfolio. If you're going to test my skill in a technical interview, don't ask for a portfolio.
true but they also want to make sure you haven't just copied others people work, and they also want to see how you handle under pressure
@@user-pl6hy3km6s
*_true but they also want to make sure you haven't just copied others people work_*
If this is the reason, then every software engineer in the field needs to be fired. I don't know of any software engineer who hasn't at some point referred to StackOverflow for snippets of code.
It's inefficient to expect coders to rewrite code that already exists, especially if it's going to serve the exact same function. Even if the coder DOESN'T copy it from someone else, the CODE will still end up looking identical (apart from perhaps var names) because languages like Java, JS, CSS, Python, etc will only work if code is written one way.
*_and they also want to see how you handle under pressure_*
Yet again, this is a pointless test. Nearly any job is going to put the worker under pressure at some point. People apply for jobs EXPECTING to be under pressure occasionally. If they knew they couldn't handle the pressure, they wouldn't be applying.
90% of junier engg. showing as their project in portfolio is something they made my following some random tutorial, but when we give a problem, they lack ability to solve problem even if they know the syntax......
@@vaisakh_km It's still not an accurate test of their abilities. Your "test" is testing _how quickly_ they can come up with a solution, not they're actual problem-solving skills.
The real world doesn't work like that. When you encounter a problem in coding, it's not like you have a team of executives peering over your shoulder expecting you to come up with a solution on the spot. That's asinine.
Unless you run your company like a slave labor force, the actual employee is going to need time to ASSESS the problem, and then formulate possible solutions (some of which may not even work).
You're expecting the potential employee to be a walking encyclopedia of all languages, situations, problems, solutions, etc. The person you're looking for doesn't exist, bud.
@@sixstanger00 couldn't have said it better. This method just makes the person so anxious that they can bomb their interview and lose their confidence.
The design misses a couple of things to consider:
1. if we are representing digital books, how a book’s content is paginated changes quite a bit depending on screen size and it isn’t captured here. It also has an impact on the interface like page turns, etc.
2. The ID was simply hand-waved. The emphasis was put on titles of books being possibly unique, but since no author is captured, it’s even harder to differentiate the content between two books of the same title. There also isn’t a time stamp to capture when a book was created either. There are some interesting ID schemes out there that can be globally unique and capture time - snowflake for example.
3. what is the point of having a display_page method? It wasn’t a part of the requirements. When crafting an interface for something it’s intuitiveness for other developers lays heavily in whether another dev can understand what they’re interacting with and what its responsibilities are by simply looking at the methods. Encoding the word display into a method suggests that this object has view-specific concerns.
For the library design, some considerations that were missed and not asked about:
- asking how the library is used: humans won’t be trying to remember a machine-generated ID. So how do we obtain the ID for a book? I wish she would have asked about a search interface
- where did the remove book from collection come from? It wasn’t a requirement
- this code example revealed some inconsistent API design details: encoding redundant information into the methods, e.g., add to collection (the library is a collection) and the method can be simplified to add or register, and secondly, command of the language: Python has setter and getters via property decorator such that both are of the same name without having to encode “set” into the method name.
- the library has view-concerns that are owned by the book
In this interview, Kylie kind of just declares everything in a “matter-of-fact” way. It comes off confident, but gives very little opportunity for the interviewer to interject as she doesn’t spend time asking the interviewer whether something seems amiss or overlooked.
There are a lot of trade-offs being made and some anti-patterns that have real-world maintainability and extensibility impact with the current design that isn’t considered - the auto-increment ID gen scheme will break should we need to shard. Also what happens when we have books with other attributes like non-digital? This means the book class now gets modified? Lots of considerations. Again, perhaps not required of a junior, but the interviewer should’ve asked and at least forced the interviewee to pivot and see how they handle that, and not simply check if their views of the world aligned.
However, as a demonstration of how real world interviews are, this is probably pretty run of the mill OOP that would get a pass and there are definitely a few solid considerations in the choice of primitive data types used, although I would have liked the interviewer to push back and ask why one over another more often. He simply just took what Kylie said as is…
Really good observations. Thank you!
I was thinking from the start, that you would never store this data in the app, such a bad design.
Why not use user_ID and private key to access your database of books and user "libraries". You can store user settings locally, maybe even last pages but storing the books would just compromise your merchandise...
what a thorough explanation! Great points!
Creating a new book everytime we insert it in a library, does it means that me and you reading the lord of the ring are reading a different book? I can see many principle of object programming are not known by the candidate.. it's ok for the interviewer to go on and passing in a practical implementation.. but the first part was not sufficient..
she discussed that in the video, that there would be single books in a global database keyed for each user's library@@asganaway
that first question hit the spot exactly what i am lacking for years i want more
I think it's very important to point out that at 33:45 the explanation that Kylie gave was incorrect in regards to what Keith meant when he used the term sub string. Keith later indirectly clarifies at 44:10 what sub strings are meant to represent, which to my understanding are the individual words in a string aka "Sub Strings", not the individual characters (char) of a word, subsequently also not the words that can be created from the individual characters to match words in the comparison of String A to String B. This can be very confusing to viewers who are not familiar, and I think requires further re-clarifying.
Fantastic video, really loved the example shown for demonstrating OOP, and the approach to writing out each task and breaking down the solutions very specifically. Thank you for the video.
It's definitely the characters not the words but it's not clear why she is saying non-consecutive occurences of the same characters are substrings too. That's just not true.
Great mock interview session!
I loved how you broke down each part of the interview, especially the dynamic programming portion.
The discussion about handling both object-oriented design and algorithms in a single interview is super insightful, and your emphasis on making the interview collaborative and conversational is encouraging.
Thank you for sharing such valuable tips for tackling technical interviews!
I value and appreciate the diverse approaches individuals take when conducting interviews. However, having served as a developer manager for years now, I have consistently chosen not to conduct live code interviews. In my experience, I believe that relying solely on this method may inadvertently lead to missing out on exceptional talent. Instead, I place my emphasis on specific concepts/criteria, such as:
- Could you provide an explanation of Domain-Driven Design (DDD)?
- Do you practice Test-Driven Development (TDD), and if so, can you elaborate on its significance and its relationship with SOLID principles?
- And so forth...
By focusing on these key aspects, I aim to identify and engage with candidates who possess a deeper understanding of fundamental principles in software development. Anyway, my two cents.
deeper understanding of fundamental principles? Software development has been active since way before those concepts have existed. You're actually missing on talent by focusing on those concepts. An experienced software developer can adapt to any form of development. To be honest your way of interview is equivalent of making a test after doing a course of TDD.
TDD is garbage though.
Going character by character to detect for plagiarism between two books sounds over the top.
Have a globalSum var that keeps track of the highest number of common words between books. Indincies is a tulple that caches the indexes of the two books that globalSum comes from.
Before going character by character, I’d have an array of objects for each book where the keys are the individual words in each book and the values are the number of occurrences the word shows up in the book.
Then iterate over the array from i ==> [0, n-1) and iterate over the keys in array[i]. If the key is found in array[i +1] then add the minimum value between the two objects to currentCount.
When we’ve finished checking all the keys, compare if currentSum > globalSum, then update globalSum to currentSum and indexes to [i, i +1]
Return indexes when we’re done iterating over the array of word_count_objects
I must be closer to my goal then I think because I was able to build this particular assignment very easily I’ve been learning programming for a year and a half now about to start the job search soon!
Thats great to here! I am on the other side of the spectrum lol. I am learning CSS and HTML 😢 This turns my world upside down. I wish my MIS BS taught me more.
@@chickenlittle4344 lol same just started learning! we will get there.
I love this. One soft suggestion is including a quick intro. I think that just reinforce a critical step in the process
Instead of giving dynamic programming exercises that are completely irrelevant to the job, interviewers should make the effort to come up with more realistic problems have some connection to the job.
I felt like this was basic OOP nothing out of the ordinary. Maybe in a job you will use a state management library and learn some libraries or even use a framewrk like Angular that already uses OOP practices in its opinionated framework, because in reality no one does this from scratch but it does not hurt to show you know the basics. Afterall this are the basics
I Think a better solution in the dynamic programming question would be to split the content in each book and match the same words, if the next word is the same, it would keep on going until it finds or detects a sentence or paragraph that is the same in both books, and of course remove any punctuation and lower everything.
this was pretty mindblowing, and looking to switch companies has eye opening. I really need to work on my algo game for the interviews
i got my computer science degree a few weeks ago and i am terrified of applying for jobs because of interview like these.
Why? The problems asked in this interview are pretty simple if you have done hands-on project before, which you are supposed to have if you are applying for a job by the way?
@@paultvshowit’s not the task itself that is the issue, it’s doing it under ‘pressure’ with someone watching you. That makes it nerve wracking
Good luck I can’t imagine myself personally being a computer science person it would definitely get me lost and give me a whole lot of anxiety if I have to do this to land a job.
Started Python a couple weeks ago, was interesting to see the way the scenarios were dealt with considering I don't even really know how classes even work yet lol
I'm in my second semester of OOP and I still struggle wrapping my head around things like class relationships. I think Most intelligent people if they put the effort in could understand what methods and instances of a classes are. However, to fully understand classes, you need a deeper understanding of object-oriented principles. Now I don't believe most people would comprehend concepts like abstraction, encapsulation, inheritance, and polymorphism etc... Its a very deep and complex topic that takes practice and practice.
I know this is a bit late, but the easiest way I found to understand classes was to, just a coincidence here, but think of them as books. A book has key elements to it, author, the content, published date, isbn etc, and those would be enforceable properties of a class, things that make the object, the object, in this case a book, a book. Right? Then inside a book, has chapters, think of those as methods, every chapter provides a function regarding the book, chapter 1 for example uses the content and starts the process of moving the story forward, while maybe chapter 6 is needed to develop a character a bit more, and all that information is there for you to reference. Think of that as class.method. You need to know about that guy from chapter 6? book.chapter6() will provide that for you. Now you have the blueprint of a book, all you have to do is initialize the object and pass it what it needs, write the author down, write the content, etc. Book hp= new Book(author, content, isbn, etc) and you can crack that thing open whenever you need to now to access it's contents, again, hp.chapter6(). Or a more realistic example hp.length() and your length method would just be like ```return len(self.content)``` using python.
And to add on to that, for inheritance like above, book maybe more of a broad class if you will, but then maybe you want a short story class with the same type of functions as the book class. There's where inheritance comes in. The book class can be used as a parent of the short story class, where the short story has copied the over structure of a book, but it's still it's own separate thing so it can have some specialized methods as well. I'd keep going but I think you get the jist. It doesn't work great for encapsulation, but just wrapping your head around classes and understanding their purpose opens a lot more possibilities for comprehension for the other concepts.
"Okay Kylie, you did a great job but I was looking for a different solution. Thank you for your time but we are moving on with other candidates."
🤣🤣🤣🤣
I didn't understand anything that was said, but this girl is amazing.
Same😂
I was really confused about the Book implementation up until 29:30. I thought I was crazy for thinking it wouldn't work with multiple users. Glad the interviewer addressed it.
Just finished the first semester of python and all of this makes sense.
I think it would be better this method handle the case when the current page is the last one. It might throw an IndexError if you try to access a page that doesn't exist.:
def turn_page(self):
if self.last_page < len(self.content) - 1:
self.last_page += 1
return self.display_page()
else:
return "You are on the last page."
In my view, the last page read by the user should not be a field of the Book class. If we enter the last page read as a field of the book, it means that we will have to create different instances of the same book for different users of our application. By the way, the last page read does not seem to me to be a property of the book, but a field of the user in relation to the book.
Anyway thanks, it was interesting to follow this video. It allowed me to get some practice on application design. I had a lot of fun with it.
You reckon she should have made a relation table between books and users?
@@alfonsovieyra9321 As far as I remember, I would have created a ‘bookmark’ map of in the user class to track the last page read for a given user’s book. In this way you can avoid duplicating instances of books just to keep track of the bookmark.
@@raccontiinformatici8580 That is the same thing I was thinking of. She totally forgot to take into consideration multiple users in Book app. Design is totally off If you ask me.
exactly my thoughts the last read page is per user and it shouln't be part of the book. It should be part of a user object more specifically user object have a of books with key being books (active / inactive) and value be last read page in that book.
For many experienced SWEs, I believe it's not hard to code it in a real office day. But walk through this question and code it in an F2F iview is significantly make it harder.
I love her confident approach. Damn my nerves lol, my mind blanks when I'm nervous :D
It's better not bro 😂😂
@@bakeery yeah lmao, "trust me I know this I just can't right now" is not very convincing. I hope experience will make me calmer, luckily I'm still studying.
@@hanac5586 you have to pass through this before getting an experience :)
Once you know how stuff work, you can crack it, looking forward to seeing your interview 😀
@@bakeery I'll try my best!
Oh same I would just be a complete empty slate 😂😂
yeah this killed my confidence
This is awesome. Thank you so much for uploading such priceless contents.
Great mock interview! I agree with the testing and edge case comment. For example, adding a validate method to make sure the book was in the collection already before adding and deleting the book... and also a user class maybe?
This is top tier content. I love hearing her explain her thinking process. Thank you freecodecamp!
I agree. Kinda annoying how he kept talking over her
@@OMFGTrexKyleig interviewer can do that, so it's good
As someone who've been on both end of interviewing, verbalising your thought process is very important in an interview - and Kylie Ying did great in that regard here. It's better to overshare about what's going through your mind (as long as it's still related to the matter of the interview 😛) than the opposite; if you're completely silent and suddenly stop doing anything, the interviewer can't read your mind to tell if you're just taking a break to think better about your solution, or if you're completely lost and don't know how to ask for help.
Substring was redefined to subsequence and not noted. Semantically, a substring’s characters or graphemes must be contiguous.
I wouldn’t be able to explain it and talk as good as her, but at least I also had the same concept going through this and slightly a bit different ways to go about making stuff! Other than that great lesson
This is crazy it’s this really a mockup for fresh grad developer
Just starting my coding journey and all I got from this is "Is there Adele" 21:07
I got a long way to go
I think a better solution for the algorithm would be splitting the string apart into a list using a " " as a delimiter and then comparing each word rather than using characters.
This man is a beast with data.
Thank you very much for taking the time for the test and the technical interview.
Unfortunately, we cannot offer you the position at this stage, but let's keep in touch for future opportunities.
I wish you success and the best realization in your career, don't give up, you have great potential for development.
Been looking for this exact thing for AGES. Awesome!
Im so happy i understood every single bit of this. I first found this video years ago and was completely lost. Lol
It was smart to introduce IDs. There are a few things i would've done differently (like introducing a book controller class, setting a boolean for the ids, etc) but overall my structuring would've been very similar. Great job and thank you for the video!
I didnt think my interview would go as bad as it did but boy oh boy was i wrong 😂😂😂 literally froze and looked at the screen for 5 minutes in dead silence they want you to be a full blown expert already prior to the job lol
Super helpful video. One thought that came to mind in the OOP Design question was, wouldn't it be better to store the "last page" or bookmarked page at the user level rather than at the book-level? The Book class describes an instance of a book, but can be read by multiple users. It seems it would be better to have a Reader or User class, which contains user-specific information like their library, their bookmarks etc.
thank you for taking us along on this invaluable resource. More please if you are able. If not, I completely understand.
The OOP part is easier than most of the one I got when I join interview as freshers. the Algo problem is a leetcode-medium. So I guess this interview is to find a person from new fresh to under 2 years of experience.
Awesome!!!!
Please bring more of these.....
Bro how the hell can you even think this quick I’ve never felt so discouraged 😭
I think the biggest take away I got from this is to just ask a bunch of clarifying questions and hope your brain forms connections so that you can finally start pooping some code out lol
Classes represent BookViewer, Book will simplify and more loose coupled.. where Book is just a polo and viewer is more a utility for active new Book, turning pages, etc..
Great video. I learned a lot of news tips and tricks on how to approach a technical interview.
This comment is only for the OOP qu.
I would rate her performance as a pass for a grad/junior role. She did a good job reiterating all the requirements, chose appropriate data structures, and the code fulfilled all the basic requirements.
Some of the things that would've gotten her to a strong hire for a grad, maybe weak hire for mid-level are:
- considering and handling error cases. e.g Book.turn_page() should gracefully handle turning the page on the last page instead of the current implementation which would lead to an index out of bounds error. Or checking the book ID exists in the library before setting it as the active ID.
- considering the time/space complexities of the various operations, and how that is impacted by the choice of data structures
- weighing the choice of book ID in more detail. e.g. int id vs UUID etc
- asking more qus upfront or commenting about the extensibility of the design
One of the reasons I dont want to pursue a degree in software engineering or computer science is because of these ridiculous interviews. They're like tournaments and you're competing against way too many people.
This doesn't seem that difficult honestly
@@LinuxUser123Please do explain why you think so ?
@@Directgamez28 dont get me wrong iam a begineer and this is kind of difficult, but if you know OOP then its kind of just like a puzzle, a book has atributes and functions
like title, publisher etc, and funtions like read() it kind of just makes sense you would have to make that into a class, a library is bunch of books, with maybe id's so makes sense thats gonna be a class, maybe its just me idk
It's because you don't have a good mindset
Isnt that how, basically, how all interviews work...?
Thats it guys, this is it for me, My brain was spinning while i was watching this video, How come these things go above my head.
Bro these are basic things how is it flying over your head?
Don't worry I am in the basic😂@@Fracasse-0x13
The legend behind the coding problem is kinda confusing if LCS computation was the intended solution, because now that you have a function that computes LCS of two books it's nice but you still have a quadratic number of pairs of books, and the LCS computation is not exactly cheap, so it doesn't seem to be a practical approach to the original problem, I guess in real life one would do some K-gram matching or something like that.
Also, traditionally it's a consecutive subsequence that's called a substring, not just any subsequence.
yeah my first thought was why do we do it on a character level. just get rid of punctuation and iterate over arrays of words would safe big time, but then again the solution to the problem stays the same. So if one doesn't know how to solve longest substring match it doesn't help that much either
More than an interview this seems like a scrum call where the project manager and his team member are discussing on the technical processes to execute real time projects in high detail. In most interviews I’ve faced so far your coding based mind set is judged once you progress to the final round. Not all software engineering job interviews are this complex and are conducted this way. Most interviewers are curious to know your significant contributions in the recent projects and how your acquired skill set can be applied to the application they are working on improving or innovating. Last but not the least how well do you remember the basics … the abcd of programming.
What level is this interview for? Junior or mid-level? The OOP part seemed a bit easy, but the algorithm portion was a bit more complex. I suppose I just need to spend more time on solving algorithms. Amazing video, very helpful to see the general idea and flow of such a dreadful process. Would love to see more of these.
i would say junior , there are many interview in youtube where you can see their problem are more complex but i think this would be fine if you are beginning about technical interview.
the oop part was childs play 😂. hardest part of being a swe in asia is getting to the interview.
@@thisismyplaylist DP question for a junior? Lol
@@crisi6754 u think this is hard? we get problems on segment tree, binary lifting, lca, dijkstra, advanced dp and more in online tests
@@crisi6754 yep these were questions junior
4:45 haha i basically made this exact thing for my own fun project to promote a book i wrote. i chose to implement the "display page" thing by writing a script that would get the next X words in the entire book - where it would estimate an average number of words per line and number of lines per page, then try to fetch as near as possible to Lines * WordsPerLine - rounding down.
it worked pretty well so that page numbers could be independent from the book content, however it would often leave you mid-sentence with a bit of a gap before the end of the line which would look a bit weird.
there can be many active books.. a map with mapping between string and boolean makes sense.
Why not just a list of active book ids per user?
Its just about the comprehension of the problem, and the knowledge for the solution
I couldn't do this.... I had one interview like this and I failed. My own voice would distract my thinking process. I just don't work this way. I have to hear myself thinking in order to write the code. I also would have been distracted by the interviewer peering over me. Thank God not a lot of interviews go like this. Most companies have an online test you can take or ask you a bunch of multiple-choice questions. Just because you can't verbalize what you're thinking very well doesn't make you a bad coder, or are even a worse coder than someone else who can verbalize what they're thinking.
That's fair enough. Some people do not work/think well when they are being starred down. Not every company is structured the same way though.
i am never getting a job
Create the Job bro !
Yes you will
Don’t worry. You will.
It's a great mock interview. I thought about 3 classes that seem better for me: book, user, and library {books: arr[], users: arr[], ...}.
I’m going to start my actual coding classes soon for my major but this video is making me feel like I’m way too dumb to be pursing this omg 😭
bro same😭 but im gonna keep going
What an awesome guide for junior developers, thanks a lot
is this problem for juniors?
this is so intense I dont know why
It's stunning that the interviewer didn't stop Kylie (about detecting plagiarism) straight! There were ONE key-word for the problem WITHOUT re-inventing the wheel, what Kylie did want to perform: IMPORT AI API and voilà! Otherwise, there's a classic string-analyzer #101 solution: regular expression libraries! That interview is surrealist from my point of view. It does NOT help people prepare for a tough interview!
This is fantastic!! I loved it!!!
you could simplify this further by creating a separate Page object that has a "text" and "number". Book should have an `isActive` parameter that the Library controls.
I am at 11 minutes into the interview and I realized 2 things. Yes maybe I am judging too fast but I think these are very important to point out.
1) Interviewee said, 5:56 "Let's make this window smaller so people can see..." What people you are talking about? You are in a job interview. This has to be a MOCK interview! Totally wrong representation.
2) She started very very wrong way to design the OOP system by classes and that is why she totally created wrong relations between books and users. First of all whole reason, you are creating a program is to access data. That is why first of all you need to design a scalable simple database context. You can use either diagram software or just an Excalidraw type of program. I started with this by stopping the video at 4:20 and after this database design, the actual program was over in my head.
table: books
model: Book
* id: number
* name: string
* pages: number
* users: User[]
table: users
model: User
* id: number
* name: string
* books: Book[]
table: Currents
model: Current
* id: number
* book: Book
* user: User
* page: number
this makes a lot of sense. i thought the way she was explaining it was a bit convoluted
Start by creating a diagram class and defining object relations. Then, implement the diagram class code and share it with your interviewer.
QUESTION: For Which level of job position can I expect this kind of interview? Will a job interview for an entry-level position look like this? Are job interviews for tier-I jobs (FAANG jobs?) look like this? I am switching from mechanical eng. to Java backend development by doing a boot camp so don't know the non-academic things about the job-market. Any tip would be helpful.
If this is an entry level interview i'm quitting coding right now lol..
@@zerry4353 It most certainly is entry level, the OOP portion is pretty basic if you've a full grasp of OOP , the algorithm part should be understandable once you're able to do most easy questions on Leetcode, hackerrank, etc. I wouldn't quit though, there are definitely a lot of 'AHA' moments when programming. Sometimes problems or alogrithms that make no sense will suddenly seem like menial tasks once you've put in the work.
Often companies will use the same question for all levels but have different expectations.