Presented by Women Who Code London 💻 Workshop Mock Algorithms & Data Structure Coding Interview
Mock Interviews are very helpful in the way to preparing for real interviews! Women Who Code London help participant of the community to organise mock interviews and practise tackling interview with each other!
In this session, we will share the guidelines to go through coding interviews and solving Algorithms and Data Structures problems!
👩🏻 Speaker Anna Araslanova LinkedIn
Anna Araslanova is a talented L4 Software Engineer at Google. She started her first job in Munich 1.5 years ago and succeeded with a promotion in 9 months. 💪
Anna has a solid gut for committing to long-term projects and excellent organisation skills to learn a new subject. She will share her tips to crack algorithms and data structure interviews which she learned from 65 mock interviews and 300 leetcode questions. She will lead you through organising mock algorithms and data structure interviews, which are key to success in the real interview.
👩🏻 Event Host Irina Kamalova, Backend Software Engineer at Revolut & Director of Women Who Code London https://www.linkedin.com/in/irina-kamalova/ ___ 💻 WWCode Digital Events: https://www.womenwhocode.com/events 🔎 Job Board: https://www.womenwhocode.com/jobs 💌 Make a Donation: https://www.womenwhocode.com/donate
This meeting is being recorded. Yeah, we are ready. We are right here. Hello everyone. Nice to see you all here. My name is Anna. I'm a software engineer and I have an extensive experience in algorithm interviews. Today they will explain what you can expect from algorithm interviews and how and share common strategy on how to prepare for them. A small disclaimer everything I'm about to say is only my opinion and has nothing to do with my employer I'm not working on today. We have Lanchius, ivina, Adriana and Mince who could help you in the chat and will help me in the final part of today's workshop. In the first part of the talk, how we will describe rules you should follow during the interview. And in the second part, we will talk about how to do mock interviews and why they are so useful. After my talk, we will show you an example of mock interviews and we will practice together in the breakout room. The mock interview starts from a small talk. Your interviewer will ask you a small question, something like how you doing today? Or describe your previous experience and how they think. What this question? Why do they ask this question? You can get yourself and answer in the chat. Okay, I just realized that asking questions is a terrible idea because I can't see the chat. So let's just continue. Yeah, this conversation is just to break the ice. I recommend making it as short as possible. It's important to have a small talk, to just introduce yourself and have a positive first impression. But please not spend more than two minutes on this because this part is not evaluated. The interview begins when the interviewer asks you to solve the problem. The interviewer will start talking about the problem and at this time you have to listen carefully and never ever try to find a solution when you're listening to a problem. If you have solved a problem similar to what you asked for, your brain will automatically create a solution similar to the problem you saw before and not the problem, but you just listening to fall into the trap. Listen to a problem, don't think. And just after the interviewer finished this problem description, you need to ask a question. So step number two on this slide is to ask question. It's important to ask clarifying questions. For example, if there are integers in the problem description, you may ask how large is this integer? Is in 32 is enough or you need in 64. If the problem is about strings, ask can this ring can be string as plantation, multiple spaces or capital letters? Ask about all the corner cases because these parts will be read in the feedback from the interviewer. Step number three is propose a test case. If a task is complex, it's better to ask a clarifying question, providing an example. For example, if you have a tree traversal, try a normal tree and a tree with only one node and ask what result? What's result of the expected algorithm? In the end, when you try to apply to this particular small example yeah, this was the talking part. Now we move into the solution. To show your problem solving skills, you need to briefly explain a brute force solution. You just describe a simple solution, write time and space complexity and move to the better solution. All this even for the brute force solution. You need to write time and space complexity if an interviewer doesn't ask for it, because this part will be evaluated. Usually the bootforce solution is not the one that expected. So you should just show that your reasonable person you thought about alternatives. You should not implement this solution, but it's better to mention it if you see a better solution. Point number two explain it into details and mention the time and space complexity. Next, be sure to ask if the interviewer understood your approach and if they have any questions. When they agree with your solution, explicitly ask if you can start coding. Because sometimes interviewers do have a question, but they silently see it until you finish your explanation. Sometimes interviewers themselves ask for coding. That's great. If they don't ask, please ask before coding. When you're coding, comment out loud about what you're doing the interviewer and you should feel like you're on the same page. It's my worth practicing lead code with a timer just to make sure that you're fast enough in typing and implementing your ideas, and in that 100% need to debug a solution because it might have drawbacks. Take a new test case and go for the code line by line. Just like a debugger. You can comment on every line of the code as a result of the execution, so the interviewer could understand what line you're talking about. It's better to have a tool like Google Talk that you can highlight and an interviewer can see the line you're describing. You will definitely find bugs and misprints and mistakes and your code. Correct them and move back only after this and move. Next, it's okay to fix problems if you found them yourself. It's not okay if an interviewer found these problems. Believe me. If there is an error, an interviewer find it, and it's better to debug yourself. This was a brief explanation on what is expected on the interview from you. Interview is usually 30 minutes for a task, sometimes 20, sometimes 14. But please attribute time. So you must do every step that I mentioned because all of them except the small talk are available. Spend two minutes on the small talk, spend about six minutes trying to understand the problem and asking clarifying questions, and spend the rest of the time for presenting your ideas, naming complexity, and about ten minutes for coding and five minutes for debugging. We discussed the structure of a grave interview. Next we will talk about how to accelerate it. A mock interview is emulation of a real interview with a person who's also preparing for an interview. Just like you. The mock interview takes 1 hour. The first 30 minutes you ask someone to solve your problem and the last 30 minutes you solve the problem that your partner prepares for you. On these interviews, you can practice international communication, you can practice ask clarifying questions, coding under pressure, reasoning out loud, and you name it. There is also a type of mock interviews called public mock interviews. It's when ten people in the room listening to you and your partner. When you solve this a problem, this is a particularly good way to train because you can just get more feedback in the end. So I highly recommend to donate shy and practice public mock interviews as well. Let's discuss briefly a role of an interviewer. As an interviewer, you have to prepare two tasks in advance, but you know well you only need to ask one of them. The second task is for a case when a person saw your first problem already and want to practice the second task. At the beginning of an interview with a person you're going to challenge, ask questions you prepare and ask if they have seen the problem before. Give one two minutes to understanding the problem you asked and answer all the clarifying questions. Ideally, the candidate will start talking out loud about asking, listen carefully and trying to understand the approach. Sometimes the approach would be new to you, but it's fine. Please try to think about the reasoning process of the person who is solving the problem. If a candidate doesn't see the solution and goes into the wrong direction, ask him questions. For example, ask what data structures they could use for this problem, just to lead to the direction of thinking about what other data structures they could use for this problem. As soon as the candidate is ready to write a code and you'll more or less understand the approach, ask them to start coding. Ideally, don't interrupt and let candidates finish at the same time. Privately write all your feedback that you will share in the interview. The ideal candidate will name the complexity without asking for it, will debug that code and find all the mistakes. If you have comments, try to present them as questions. For example, what if the input is an empty rate just to show that they missed economic case? Ask about time and specificity on the internet because the ideal candidate would remember to name it without your questions. It's your responsibility as an interviewer to track time. So if a person spends more than half of the time and still doesn't know how to solve the problem, propose to give a hint. If they don't know the solution 810 minutes before the interview, before then, the interview proposed to tell them the solution. Because coding and on solution is much better than just leave the person disappointed. Without any artifacts from this interview, when there is no time left, you should stop them to stop and give your feedback. If your feedback is long, give brief feedback and send extended version later. If you're wondering what is the best site with a problem similar to those you will get on the real interview, it's Leadcode. I can strongly recommend Leadcode.com because number one it has good problems like the difficulty of the medium problems. There is similar more or less to what you have in the real interviews. Number two is there is a huge unity there. You can find solutions to every problem in the discussion section or on YouTube. If you prefer video explanation, just search for them. Just search on the Internet with solution and you will find it for sure. Number three, there's a lot of high quality study sets. It's more than 1000 problems on the website. But you can find small study sets for your request if you want to learn algorithms. Or you can search for study sets for those who learn algorithms. If you want to refresh your knowledge, you can find it on Lead code and outside of the code. When I was preparing for the interview, my quest was to repeat all the common problems and I could recommend the study settle, but you can select whatever you want. And the last but not least advantage of the legal is the active discussion about people's recent job searching and interviewing experience in all the major tech companies. I'm sure there are actually more advantages of this website. So I can recommend this. And the last slide of this presentation is about tooling. When you during the interview you should select a tool where to practice it. You can practice directly on zip code, but we recommend to conduct interviews just using plain text. In Google though, we propose to do remote interviews in this hardcore environment without syntax highlighting and ID suggestions. Just to practice interviewing in the most simple condition. Because every company has different tooling and some companies actually conduct and reduce. In Google Doc on this slide I put the settings that you should change in Google Doctor turn the document into the convenient development environment. Number one disable all the auto formatting in the tools preferences. And number two select a monospace font so it would look like actual code in the text editor. In the code editor. Thank you for being here. Please, if you have any feedback, share with Alexias or drop a line to me. Sorry for not asking questions. I just don't know how to use chat here. You can finish with the presentation. So you will see the chat again and there is a question. Yes, Sherick is gone. Yeah, thank you very much. I see a hand from sharing. So the question in the chat it says will you clarify or what do you mean by you and your partner? Does the interview involve? First, you the interview, second, the interviewer and third, a separate partner. Yeah. Thank you. Sherry. By you and your partner, I mean two people who participate in the interview. In the mobile interview, you simulate the role of a person who asked me a question. It's interviewer and a person who solving the problem is interviewee where like two partners, no other people involved in this process. Hi. Hello. First of all, thank you so much for taking the time, Anna, and giving this great presentation. I have a few questions, especially for the part that you talked about the problems and questions if we, for example, have seen a problem before, should we actually tell the interviewee that we've seen it before or should we just go on and like solve the problem? Of course you should tell this because you're practicing to be in an uncomfortable environment and this is number one, so it's better to solve problems you never seen before. And number two, if you really solve a problem before, I guess a person who asked this question, like for several weeks already could just recognize in this uncomfortable situation when he was affected in fraud and something like this. Yes, thank you so much. And what if we were confronted with the problem that we cannot actually solve by an optimized algorithm? What if the only thing that comes into mind is something that is a brute force algorithm? Should we start writing it or just say that we don't know any other way of doing this? You should definitely show what you like thinking. If you really stacked, ask for a hint. Sometimes it's fine to ask for a hint. Please don't stop and give it up. Like never give up in this interview process, it's like your time to show yourself and it's fine to be start. Just think out loud and especially in democ interview condition, your interview should make hints if you have any problems. Yes, thank you so much. And my last question is how many. Questions do they ask usually? So how many problems on average should be able to answer in one interview? In every company it's different. I actually didn't mention it, but it's better in the beginning of the interview, just ask how many questions you may expect. It's usually one or two and if it's two, it's better to be ready for it and not like in the end of the interview, just realize that you have another question, just ask for it in the beginning. Okay, thank you so much. Okay, we have questions in the chat if I follow the order. So the question from Maria will it be possible to use my usual setup for causing and not attack editor? I'm junior iOS devout, so I use playground for this type of tasks. If there is a drawback for using this during interview, if we are talking. Maria, if we are talking about big tech companies, it's usually not allowed. You have a tool from this company and you should use it. So I've never seen a situation where you can use your code editor. Yeah, I can add by myself that I read in Cracking Coding interview both the advice to write on the paper to be like super familiar to everything to be able to do. We have one question from Inboynne. Do you think the cost premium is worthy? I don't really know. They really changed interface before. When I interviewed it was like open frequency of this question. Now they even don't show this. I don't think it's really worth it because all the studies steps cover all your needs and in companies like Google, there are like thousands of interviews. You can't expect questions from zip code but it's a good simulation just to solve the questions from the study sets. I don't know, I'm not an expert in this premium. I think prevotion is quite fine and the community is huge so you can get any answer for free. Yeah, and adding to that the premium option is like you can really start without it. So you can just check the examples and go through the discussion. So there is kind of not really a good reason. If you want to pay it's okay, but just for studying for interview it should be an Optic community version for sure. Yeah, we have next question. What will you advise to keep calm while calling coaching during the interview? I guess. I understand actually just practice mock interviews. Interviews is a great opportunity to don't freak out and just react in a good way to over what could happen during the interviews. Like I made something like this t plus mock interviews only in English and several system design interviews and it was very helpful just for timing for your emotions. On real interviews everything is very similar. Yeah, I can offer that helpful because if you put yourself in this situation every time then you go to the real interview you feel like okay, I'm just in the same situation, I have 50 plus time so it helps to become during these interviews like you already been here. He has a next question. He's interviewer planning to ask two questions and interviewee could implement only first question. Is it considerate as a negative time not hiring? It's very dependent on the question. Thank you for the question. If they have like similar complexity, it's definitely a negative sign. But sometimes the second problem is a very hard problem just to make sure that you not get for it. If you solve the first one, I also solve these cases, but it's better. You definitely need to implement at least one and the second one is very dependent on the problem and the approach of your interviewer. You just want to add that sometimes the interviewer could collect enough information from the first question you have sold. So in that case it might be deemed as okay no to attend the second one but if the first one is a very simple one and they probably kept it as a warm up in that case you're looking at people who successfully sold the second one too or attempted at least. The next question interviewer ask for writing. I've never seen this before. I actually proposed a few times to write the code but every time it was rejected. So once is no. But I can tell that it really depends on the company, the job, the applicant so I think what would be helpful for you maybe when you are going for an interview prepare or try to find glad door maybe what kind of interview the company does, which kind of questions so you can at least have an idea. So the company really depends how they would interview you and depends on which job are you applying to as well like as a developer or they will ask you to do cell record to do even I saw companies that use your IDE and environment that you feel really depends of the company. I would say of course probably not on Facebook, Google or Amazon so they do have like more standard way of doing things but that's really the kind of the company so if you are not a senior engineer or a junior just starting your career don't discourage because that's really the end of the company. Sometimes they can allow you to use what you want and what you feel more comfortable to because also depends on the experience that they are looking for. So I think for the mouth interview is more for you to prepare yourself for the worst let's say. So practice, practice and practice because then you feel comfortable with any kind of situation. Use your recruiter to get as much as information before the interview about the process. All these questions like would there be one question or two questions? What is the ID? What more about each section of your interview system design or coding? You can get as much as information as you can from the interview that will help you prepare like each company might have a different way, different structure to these interviews so don't assume just get more information from the recruiter before you go for the interview. Yeah, also some found companies like Amazon and Google give opportunity if you ask just to have a session with a software engineer or with a recruiter just to talk about what you can expect from this interview. Yeah, I can also recruiter is your friend. They actually interrupted to hire you, they already found you and their job will be done better if you will go through this interview you will be hired so they are like the best person to help you. They are your friends. We have in the queue Taib in Cardinal I hope I pronounced it correctly, it's raised hand. Are you ready to ask a question. Hello. I'm thinking about any company and I'm doing the interview at home using a Vs code or any other playground. And what the interview interviewer should expect from us? Like should I write a test? For example, they are expecting me to write a test and then code and like a clean code, like every perfect code or just to answer the problem and that's it because I have time or something like that. Thank you. Thank you. You usually expect to write clean code with good naming and all the stuff but you usually don't expect to write tests. Some companies actually require to write tests but it's much more than just to implement some algorithm that you were asked for but you definitely need to debug just to describe your algorithm. Yeah, I would ask that it again depends on the process. And if they ask you to follow TV practice for example to write tests first, that's something that you will be aware of from the recruiter or the recruiter will tell you like hey, they are going actually to check if you can cover it by test. Some companies do this kind of coding in tours but you also have this information, ask about it. Yeah, but about the code quality. Almost everyone I don't know, I feel everyone expects a good quality of code. Yeah, I think the main thing here is you communicate clearly as your thought process to the interviewer like you're thinking of writing a test and maybe they will direct you to do something else because of lack of time or whatever reason. But always communicate and make them aware what you're thinking to do next or what you explain the code by stepping through it. It's very important that you tell them this is what I'm thinking and get their feedback and include that in your next step. Thank you so much. We have two more people. Nicholas. Hello everyone. Thank you very much for this meeting, really appreciate that. So I have a question here. So it's a granny, this book that I've been reading. So it's correct in the code interview. I think it's a quite famous book. So there is a section of this book that they are saying that sometimes the interviewer might ask you some questions that do not have answer. So my question is if I'm facing this kind of question, what the interview is expecting for me, what would be your best tip for this scenario? Is it about algorithm interview or more like system design or leadership question? So it's this book here. So it's about algorithms? Yeah. Sometimes they might ask you some questions that they don't even know the answer or maybe the answer is really complex, they just want to see how far you go. I'm really sorry, I only read one chapter in this book about leadership question. Actually very good chapter and highly recommend to read it. But openended questions, you don't really have them on elliptic interviews. It's only maybe in the beginning, during the small talk. But usually you have well defined questions with well defined answer. What is expected from you? Maybe Adriana, or. In general, when they ask this question is more to understand how you behave. So I would say like ask more questions on that. So usually to understand, read again the question and try to come out with more questions. So they want to know how you talk, how you think. So the interview is more for that. So to know you, how you think, how you come up with solutions. And I think also in the book she said it's not very common to do that. And usually good companies don't try to tricky you to not give you any kind of solution. So I would say, just always thinking about the solution, try to propose something, even though it's not the best solution. That's okay. Then you can say, yeah, I can think about optimize the time complexity, the space complexity, but it's not like the company want to just find out if you come up with a crazy idea. So don't think about that. I think it's more about to talk out loud. How do you think and how you come out with solutions? Yes, I agree. I think sometimes towards the end, maybe you have solved the problem and the interviewer ask a follow up question, which could be a complex, open ended question. You might not have the answer, but you know, take a post, try to understand, ask question. If you are not clear, ask them back as what it means. Try to get help from them and give the best possible answer you have in mind. If you don't know, that's fine too. You can be honest and say I have never come across this data structure, or I have never come across this algorithm. I don't know. But it's more to see perhaps your reactions, your communication style. If you're putting in a tricky situation, how do you overcome that, that sort of thing. If it is a complex, open ended question, I don't think most of the time the interior expect you to have a perfect answer. So bear in mind. Thank you very much. Yeah. And we have one more Christmas with you. It's me. I just removed it. Hello everyone. Thanks Irina, for hosting this wonderful seminar. And thank you Anna, for this enlightenment session on how the interview process actually is. And also to the volunteers at The Woman Who Code. You guys are doing a fantastic job. I have two questions actually. The first question is how does one person who's trying to prepare for interviews choose a particular language? Like, you see, for example, there was a friend of mine who was very comfortable with Java. However, another friend of mine would always suggest you to use Python. Because Python you can write less number of lines and also achieve the same logic and quicker apparently. So how do you decide what language do you need? And does the language have to be the same defined as the job description? So that's one question. Second question would be to add on to a previous question someone asked. Here is, are there any open source resources where we can practice mockup interviews right now at this point of time? If there are, please share the links later on. Yeah, thank you. Yeah, thank you for the question. Regarding the language, use whatever is most comfortable for you. I used, for example, C plus plus during all my interviews, and only one time when it was hardly stated in this description that you need to use Python. I use Python, but usually just talk to your recruiter, talk to the person who asking the question. Do they expect particular language? In punk, it's 100% zero chance they ask for a specific language. And when you practice more interviews with other people, language is not really important. You can interview a person who, like, ride go along, but if they could explain their ideas, it's absolutely fine to practice with them. Did I answer the first question? Yeah. Thank you. And just to add, do you have to be specific? Not just the fine companies. What about the next part of companies which arrive? Are there also language agnostic? Or would you say that company is below fine or language dependent? Okay. They usually ask for a specific language, but it's in the description of the overall. But other companies also be not linked to the language, like not bounded to the language, because at least in booking, I did have interviews in my language, but it was another language in the description of the position. There might be companies like it's a full Java house, so they would want the candidate to be very efficient Java expert or someone who can write with east. So they might ask you to do the coding interview in Java. But most of the companies have seen, like, they'll give you a few options, either this or either that, or either give you some options. And if one of those options is not a language that you're comfortable with, you can always go and ask a recruiter, can I use Python? Because I'm not familiar with C plus plus Java or C. I'd say most of them should agree, because language is a medium, that you communicate your logic in solving the problem, and that's what the core of the solution is. So I think there won't be hard restrictions on language in most of the companies. But always check. Yeah, if you pass the screen of the rescuer, you have a good chance, basically because something in your resume attracted them already. Thank you so much. I have a question. Can you please repeat it? Yeah. Are there any free source, like open source websites where you can practice mock interviews right now? Can I recommend anything? I know only. Two resources. For system design. There are websites like pramp, I haven't used them exclusively, so I don't know if I should recommend them. But I have seen lead code also have some mock interview lately and there are paid services, of course you probably know about them. Sorry I rena correctly if I'm wrong, but from what I understood now we are trying to prepare ourselves here for us to be helping each other for the boss interview. So the idea for the next steps is basically we have a channel and where people can say I want to prep myself for some interview, who is up to who has time, and then we try to find volunteers for that. So we all are volunteers, we all can help each other. And then I think this is kind of the first step for us to get there, prepare ourselves to help each other and that we can do it as free and as a community, of course. Yeah, I can add that here. If you want to go and practice right now and you want guaranteed that you will have someone for putting an interview, then prompt your choice because it's already automated system, it's free. It's like you have several free credits, but actually if you pass in through you, if you feel the feedback or you invite some friends, that will give you one more credit and in the end you can find yourself in the loop of free credits and it will be free for you. Here in Women Who Cut, we already launched one series for Mocking to use in summer and we are going to try it again. So right now we developed these workshops to prepare people how to conduct more interviews. And yes, there will be a bit more support than onprem.com where you just have to make automatically match to anyone in the world. Here we will do some more support, get the feedback from you how to improve this process. But at the same time you need to wait for our resources. You also can go to the chat, I sent a link to the Slack and you can go to mobile use channel and also ask anyone to join. Yeah, so we are planning to make it more organized, but we need to wait for this event. We need to wait for forms and everything and matching from our volunteers manually. There are two options right now for you, at least two. I know. Is prem free. It was free, I don't know. They also, as Irina mentioned, you get like three free interviews and if you attend them, you never lose them. But if you skip three interviews that you have scheduled, you basically lose the points and you have buy the interviews to participate in the free interviews again. So it's basically free if you are polite person who do not skip scheduled interviews. To feel the feedback on the person that you interviewed about interviewing, about how he was a candidate and how he was an interviewer and give you a gift. Next, free credit because you were a nice person who actually gone through this process. So you actually right now. I think we missed out on one question. There was a question by Rosilla, I'm going to read it out to you. Other questions the same for the front end and back end full stack positions. We did talk only about algorithm interviews. There are different type of interviews. Irina, I mentioned that there is a session, a workshop about back end interviews very soon and ivina, can you please continue? Yeah, right now we prepared two workshops, one on behavioral interviews. We already run today's coding interviews, algorithm data structure for back end, full stack and front end. If you go to particular to interview for it, it will be different questions and also depends on the language. For example, the question for Java will be different by the Christian for I'm working on it to conduct more workshop for content and at least for basics that could be used to any interview and yeah, follow us in our networks in Meetup and you want to miss it when it's ready. At least I have a person who prompts me to do this workshop for front end and yeah, one more. I think I have one more promise for back end. So yeah, one day it will be there. I hope I answered. Yeah, one more question. Yeah, there is a question about Al go expert. Is it free or not? I actually don't know. It says it's not free. Yeah, I see the question. At what point of the preparation should we proceed to go to mockinterview? Should we prepare for all the data structures and then go to mock interview or prepare for one topic and do mock interview for that topic? And what would you say? I would say if you learn some topics, for example dynamic programming and now only dynamic programming, ask your interviewer to ask you dynamic programming. That's it. It's better to prepare like at least generally for different types of problems, but it's also worth start earlier than wait until you are super good in solving problems alone. I feel there are a lot of beginners in the community who like agree to solve beginner questions with you. You just need to think on the level and on the on topic, Adriana, and see what they think. Yeah, I'd say cover your preliminaries first, like in all the basics, go and revisit all the fundamentals first and then once you've covered that section, probably attempt a few lead code questions to give you a bit of a confidence, apply it to the problem solving, et cetera. Then start attending more interviews. Don't keep it as the last one because as Anna said, you might be good in solving the problem on your own, but you might not be communicating that to the interviewer, which is one of the important things that we look in candidates. You might also want to practice your time keeping skills and so on. So start early, but not too early. Then you feel you're comfortable with the basics. I'd say start giving it more interviews. Once you've done a couple, you would probably know where you stand and you can take a few weeks to prepare and come back. If you need more time to carry on, adjust it, like, do some self assessment and just the timings of your next interview based on how you see you have improved. Yeah, maybe if you can solve easy problems on these quotes, you already can have more interviews in this easy problem section. Don't wait until you can solve every medium problem because it never happens. It is, but it's very long. Top. Yeah. I would say do not wait too long and keep yourself from the comfortable situation to be there along this laptop to this situation where you are this someone else who actually watching you, actually watching your heart. It will up your level of adrenaline. Then you will feel like, okay, I will go and practice more. So there are some trade off and I would suggest do not wait too long to try with someone. And if you feel too slow, you will understand, like, okay, I need to practice more, or your partner will tell you like, okay, go and try to solve more tasks. It will be helpful to be better here walking through, but at least you will get something back at this point. Yeah, I see one more hand. Camila. Hello? Can you hear me? Yes, thank you. Thank you, Anna, for the presentation. I have more of like a general question, I guess. What would you say is like, realistic timeline for someone to start, like, studying about data, structural algorithms and to the point when they're ready to go for an interview, and perhaps for someone who is not from traditional CS background and also has a full time job and family obligations and such. So in order not to stress ourselves, what would you say would be like realistic timeline to prepare? Thank you. It's definitely dependent on how much time you can invest after your work and on weekends. Like, for example, I prepared like full time, two months, and it took me a lot of time, but it was only two months for like 300 problems, plus all the system design topics. I feel if you just know something about algorithms, I feel like some statistics. If you know something about algorithm and have Stem background, but you're ready to regularly exercise, it's like half a year if you have fulltime job, but you still need to invest a lot of time, it's dependent more not on the time, but on how many problems did you practice and how many video interviews did you do? I cannot answer, unfortunately. I would also say, like, if you are just starting just don't wait six months to start applying for a job, just start doing because the worst case you already have is a no. So try to improve, do more exercise, try just do it. If you are applying for a junior position that will be the same level of your interview for a junior position just try it so don't be scared. The mock interview does say like try some challenge and also you can apply for the mock interview with anyone. If you have a job offer and you know more or less what they are looking for then you try to prepare for these applicants and then you try to do the mob interview and prepare for this kind of challenge so you don't have to have all of that but if you don't have any offer you have the time then do as an suggested because I think you just have some kind of goals. For example for me I also have a goal that I want to go to Google in the future and I don't have much time and I have to practice for the interviews because it's different from most of the companies so you can for example just make a deadline for yourself three, six months you apply 1 hour a day to start. That's what I'm doing and that's it. There is no right and wrong but it's more like how long you want to wait to apply but just do it. Actually it's very good advice cancel my because you can apply get your freeze for one here if it doesn't work but actually my advice was only about fan companies it's a lot of companies except fan, please apply to them, they have much better success rate and it's better to start working and not waiting until you know everything because you never know everything. Yeah, I see one like two more questions in the chat where did you do your walk interviews? So we organized it at Meetup event and we attached forms there our tools organized tactics and then we gave an instruction how to do so follow us on our meter, you will see similar ones soon. The other question what about system design interviews? Will be a session for this kind of interviews. Please tell me if you need these interviews. They are for more senior positions and if we have demand here in women who cut for this system design improve as well, we can start it. Yeah. It's not something that you need when you starting your first job in It if you condition from the carrier or if you only was read it but if we have more members here who experienced and want to find a new job and they want to go to 15 dependent for you. Please let us know and then we need to find an expert in this interview and yeah. We can also organize it one day. Yeah, I think it's all for questions I don't see anything else. Wow. I see that it's great demand here for these interviews. And it was a lot of Christians. We didn't expect so many Christians. So what I can advise right now, we still can show small simulation of more controls and then we can just finish them because I don't think we will have time for breakup rooms. What do you think? Volunteers advise me what to do. What is the best? I think everyone here wants to see some mock interview happening live. So I think would be very welcome for them to know how can we do about interview next. So I think it would be nice. Yeah, I think so as well. It's good to give a bit of a taste rather than diving into it straight away. Probably we can have follow up sessions where we practice mockintrusion breakout sessions. Good. Okay, I'm ready. I didn't practice for a year and a half, so you will see how it looked like for a person who didn't have too much experience, because I really forgot a lot of things. I think we can use documents that I shared. I deleted everything, but only the conditions. Yeah. Let me present the slide with the problem so people could take a screenshot and maybe it made it try to look at this a little bit more. Here's a problem for Irina that she's going to solve in front of all of us. Take a screenshot if you need a reference during your solution because we will be silent. I can read an array of n integers where me is in range from one to n. Return an array of all the integers in the range from one to n that do not appear in this initial array. Anna, can you increase I think it's. Very hard to see now. Very hard to see? Yeah. You can put in a full screen and increase the phone size or maybe open the Google Docs if you can. And I would ask Irina to show your screen because she's going to solve this problem in Google Docs. Okay. Okay. I probably won't see the chat. Do you you hear me? Yeah, we hear you well and see you scream. Okay, sorry. Because when I shared me for a while so I need to listen. Yeah, well, there was an example, but actually when you go to the real interview, I think they don't have an example, only the conditions of the task. Right. There are only conditions. I don't have an example, but I need to create as I remember from real interview, I have only these two lines. I actually hear you very bad. Okay, let me share it again. Can I maybe ask Adriano or Means to conduct the interview? Because it's like no, I think the. Problem the problem is my fact. Like, when I change it to taps sharing, the capture of the microphone changed because they use on the laptop. Let me share my screen. It's some sweet from zone. Okay, you do see my screen right now? Yeah, I see it. Okay, and you hear me well right now. Okay, let's start. I will try. Yes, what I was talking about that when I have an interview, I have this document and it has only conditions, but I don't have even example. So I'm going to read the condition and I'm going to create example by myself. So I see it for the first time in my life and I read first of all, don't afraid to read it at loud, it might help for you. Like when I see the condition. Okay, given an array numb of n integers where a numb of I in the side is a range of one to n and they return an array of all the integers in the range one to n so they do not appear enough. Okay. I can try to understand the step through putting here numbers. Like for example, I have five, one, two again five and my end will. Be five here I'm not sure you are in the same page as we are seeing now because we don't see any typing. Yeah, me too. Okay. We see the Google drive lead code task, but no typing from you. I see a Google doc but I don't see any typing. In your browser that you are sharing now. So maybe if you just change the screen that you were sharing. Okay, let me know what do you see right now? Nothing. Yes, nothing, sorry. Okay, probably you can do it, but I don't know why, honestly. Let me try to talk again. I think now we can see your cursor because it's pointing out. So I think now we can continue and if you can increase the zone so we can also see better. Yes. Okay, and you do hear me? Yes, very well. Yes. Okay, that's fine. I'm looking at this issue and I can get the example to understand it. So for example, I have n which is a called find. So I create an array of five NUMS and it's not necessary to be one to m but they should be in this range. For example, how m means five. Ideally it could be range of 12345. I just put it to understand it better. But in this case the result will be like this, it will be m theory because all numbers from one to five appear in numbers. Am I correct? Yeah, you're correct. Okay, so it's a pretty good example, but let's think that we have here only these numbers, it's the same number but we see that actually three is not presented here and four is not presented here. In our result there will be three and four. So how I can solve it? The first the road solution that come into my mind. Okay, I know that I have these. Numbers from one to n and I need to check if all they presented. Here and yeah, I need to check. Actually for every number, if it exists. Here, what can I do with it? So the first the brutest solution that I can do, I can just go. Through two cycles and I can compare one and like, okay, that will be. Like let me explain it's. It is my index. Like, I will be in the range of one to five and index three will be for this actually array of even numbers and yeah, I will check, I will check for every office if it exists, if I exist in G. So it will be quadratic, the complexity of it will be all by and that's quadratic. Do you want me to implement it or do you want me to think about it? No, let's think about better solution. Okay, let's think yeah, how could we do it just for one cycle? When I look in nothing, I think like, okay, but I can go only once for the cycle if it will be sorry, I don't know why it's doing like this. If they will be sorted. So let's look at this 1255. So how we can sort it? Well, we can use functions to sort it and these functions actually have N logan complexity and then it will be enough to go just once. Like, if I have one here, I see, I hear like one and if it's the same, I just keep the index. Like, I increase G index and I go further and yeah, for this, I increase both of them. For this I need to first of all increase I and put three and four in my result. So it's not that I will read quickly because it's more about checking, but actually the operation to go through it will be all by one, sorry, it will be linear. So the capacity will be like this. We first of all sort the array and have login and then have like end. So the general complexity will be again all and login. And I look at it and I think that I can do better. Actually, I didn't use I didn't use one more interesting condition here. That they are from one to M. That means that they are not decimal, they are integer. And that means that at least I can watch them with I can watch them with indexes. Like, for example, if I think about this array as an index, like, I see that ideally I have indexes rate and I just increased like one in the position of zero. So actually I can use it. Like, I can use this indexes and what I would think about when I see when I look at this one, yes, I can say it like, you know, in my array of indexes, I can watch index and then like the number that it appeared. So for example, if I have one, I can say that on the position of zero, one is presented, one is presented. That means that in the position of zero, I mark it somehow. So I would use boolean array to mark them. Like, this is true. And yeah, because I started from five and first of all, all my array of the fault, I know that they existed there. Yes. I look at the five, I say that okay, on the positions five, position 10, it exists for two, okay, visits exist for five, again it exists. And for one, again it exists. So then I analyze this actuary and these array tell me like okay, on the position of two and three, this number doesn't exist, I do not exist. So it actually will be the result of index, where it's false. So it will be three and four. The complexity of this will be all by one. So I linearly just only one will throw this array. But I used also additional memory to create this array. So actually I used in the time I use Obam, it's time complexity. And I also use traditional memory, which also take O B, because I need to check all indexes. And that's what came to my mind right now. So Ana, could you please tell me if it looks nice or should I think about something even better and do not use even memory here. Do you think it's possible to work on? Let's implement this solution first and then think about how can we improve it. Okay? So I'm going to use Python. Okay, let me put there like at least I think they will put something like this. Okay, now I see what happens. That's something that will be given to me as well for OTMs. As you see, I didn't drop to the implementation first. I asked questions. I did something very simple, like try to understand the problem, try to understand some cases. And only now when we discussed how it can be done, and at least one, maybe not the best solution, but yeah, here and ask me to call this actually. Yeah, I will use Python, because it's simple language. It's not mine professional language. I do not put anything in production. But yeah, I will try to use it right now. Yeah. And we coding in Google document. Okay. So I would say that first of all, I would say that N is actually the length of our numbers. So let's define it. I will create results like this. I know that it will be done better, but it seems to a way. And I will say that there is. Array of Boolean, like if they exist or not. So it's like, for example, boolean. Yeah. And on the coding industry like this, I do not use the best words to describe it's not being cut at all. But to save some time right now, I do have this. Now I say that's actually bullying. For example, let me check boolean of false and say false dimension of N I want to initialize it first of. All. Just for it through now here in this boolean, when go to the index i, which is actually the number I put there too. And that's it? Yeah, and that's it. That's all I call it enough. It should be enough or maybe even better like no, I need also do one because it's one to n but indexes they start from zero and minus one. Now what we do next? Now I need to collect result and result here I will do it in Dany way, like easier than Python professional code do it like now we go for B in Woolland. So if no, I want to go for the range. Yeah, I can use I again in the range from zero to if boolean index h is false, then I put this number in result. Yeah, it's append function because now we reverse and that's it. Now I return the result. Yeah. Okay, do you want me to debug it? Let's firstly think about maybe a different solution that would be easily rated from this solution but debugging. Okay, have any ideas about how to get rid of the memory? So there's something else I can do. Let me think. Well, what else I can use? I use right now conditions that they are numbers, they are integer, so I can match these indexes and I can do better. Okay, I have an idea. Like the first idea I need to talk I just go through it away only once. So what can I do then? Well, the first thing that also comes to my mind what I feel if I would put zero zero like for example, I meet number for example, something strange. What if they can use a property that all the numbers are positive and more than zero? Yeah, I thought about that, they are positive more than zero. So I actually do not use zero and I thought if I meet five maybe for the index that related to five so here I put zero. So if I go like this, I put that zero. That means that when I go through the regain I see the zero in this position I know that five exist but the problem is that if I put it here and it was one and consider it was only one here, so I lost the number of one. So I need to figure out how to not lost this number. So zero is not helping here. What else I can do? Positive? Okay, we have not only positive, we have also negative numbers. Okay, what if I put negative at the index where I met five? That means on the index there are five things that related to the files I put negative. So in this case. I want to. Lost this value and when I came here, I still see that here is one. So that means that for the index that's related to this one to the zero, I put negative again. Yeah. It can work, actually. Okay, let's go through it. Yeah, it looks like a good solution. Let's implement this. Yes, let's put it here. Okay, I will. Let me do the same preparation. Okay. Now I go through it rate only once. So I can even go through numbers. So I can go through it. 5125. So I'm at five as the first number. Now in this number. I want to. Change numbers of ice. And also it will be minus one. Because I remember in the first page, one time, one value less. I want to put the negative value of this one. Okay. When I meant this number one, I. Won'T be able to do it because. Consider I meant it now it won't work. Right. So. I need to use absolute wires. So it should be. Yeah. So when I met minus one, it will be also nothing that we already marked it as minus one. We don't know how many ones are there. So that means that we also have to apply first of all, we need to say it should be with one, like positive, but with minus. Okay. We have it here and we have it here. Yes. Not everything. Also, because we could spoil this number by minus, it should be twice here and it should be applied only to one. Yeah. Like this. Okay, now it should work. And now to connect my results again. So if I didn't meet like if I go three, so I put here negative value, then one here, negative value, then two. That means that one and these two numbers, because I didn't meet spree and form this positive number. So yeah. Okay. So again, now for E, not the numbers, but in range, in range from zero to N. And I analyze actually indexes now. So if nuns of I more than zero, that's our candidate. So we put them in result. So again, result up and result up and I plus one. Yeah. And return result at the end. Okay. Yeah. How it looks like should I debug it just in case? I actually feel that you have debugger on this example. For me, it's fine. You might just check if you feel the code is correct. I actually feel it's correct. Just in case, for the sake of blood check. I can think about each cases. Right. Like we don't have like we have empty now there is zero, actually. And we do not do this cycle. We don't do a cycle. So the result will be empty. So we're okay for this edge case and yeah. And for big numbers, because it's linear, it should be fine for big numbers. For big N numbers. Right. I actually agree with the solution. I like that you detected the corner faces and named the complexity, corrected yourself when you misprint it. And if I give feedback, the best what you did is that you incrementally improved your. Solution by proposing several options and improving complexity every time. If given honest feedback, variable naming could be a little bit more precise. Could appreciate names, not like name boolean as an array, but maybe presented an array as the name of an array. We've basically a value presented in array, but in general a very good performance. Thank you for demonstrating this for us. Maybe audience have feedback for Irina because probably the best value that you can receive as an interview from this public works is that audience can give you feedback. I see Sherry transcripted everything with chat, which is very kind. Cinderella told you. Thank you for demonstration. Yeah, I think from my feedback I said it was a different way of interviewing process. For example, you come up with first proposing your idea before coding. Usually I just talk and then go through the code. So it's kind of a different way and I found very nice and I think as an interview, if I was an interview, maybe I would not get it from your examples. But it was nice also that Anna wait for you to present the solution and then I could really understand what you are proposing. So I think that's both way was kind of nice as an interviewer and as an interview as well. When you propose an idea then but we wait for each other to completely stand for the idea that you are doing. So I found very interesting and feel more relaxed to try out this version myself. Yeah, I also like the fact that you had an example straight away and then was using that example in each steps as a debugging and also to see for yourself whether this would work. Especially the last one where you're seeing like oh, this is negative, so I should take the absolute value. So always having that example in your head and using that really helps. One other point I want to point out for everyone is that when we started there was some technical glitches. But Irina continued throughout the process where I felt sometimes she was a bit stuck, but she kept on going. That's a very important thing that you can take away from this. Keep going. You might get it wrong, but that's okay. Maybe next step is the step where you correct yourself. So don't be alarmed even if you feel like it's going off track. Keep going. Yeah, I think one extra thing, maybe for the new people that are not familiar with notation, for me at least, it's hard to give the notation right away. It's better to write the code and give later on. So if you also don't come up or you don't know now, how would be the complexity, the time complexity, the space complexity you can write a solution and then the interview can ask you later where is how it is, the time and space complexity in the end or during the process. So also if you don't come up with this in the beginning, you can say after you come up with a solution, and usually interview also would ask you that. So also it's important to feel comfortable talking about that and to understand how is the time and space complexity. Thank you for this feedback. It was great feedback and yeah, I hope that this example will help everyone to start somewhere to see that okay, you can be stressed, you can think like, oh, come on, how to do it? But I just keep trying to keep going. And yes, it will be positive for interview as well. Like, notify them about your process in your mind, what you're up to. Yeah. Thank you so much. Thank you so much. I mean, we also planned more interviews of the people in the chat, but to be honest, we already spent 2 hours and they feel like maybe we could keep this part. Yeah. If we set, like, we will definitely kick the sessions soon and yeah. Thank you. Thank you so much for coming. I really have this big audience here. It was stressful to be before the audience in this process of more interview, but I hope that I parked everyone. Do not be afraid. Do not be scared. Yeah. And thank you so much for coming. Thank you. Bye, everyone. Thank you.