Hard career as a programmer or what employers want
Disclaimer: This is not a PR. At the moment, I have no problems with employment.
With this article I want to show how strange and bizarre a programmer’s career can be (or a person involved in programming, because I probably can’t rank myself as a “programmers” caste). I don’t know exactly who I am, just like a rare breed of cheburashka who know all technologies from ASM to Python, and at the same time do not know anything seriously, whose algorithmic skills are as sticky as jellyfish in the Black Sea, and computer science is close to zero with frenzied work experience.
I am almost 40, and I am from the generation of handicraft and self-taught programmers who received higher technical education at a Soviet university in the early to mid-90s, when training was different and even such a concept as computer science was still absent in our universities. It was only abroad, and I did not know anything about such a term and related discipline until 2007, when I began to actively go for interviews and position myself on the labor market.
Maybe this story will be useful to young professionals who grope themselves in the IT industry in order to avoid any mistakes and build their career in a different way.
These are the main milestones of my “glorious” IT biography. The most interesting thing in it, perhaps, was in the period 1990-1995 and 2000-2010.
In fact, not so simple. I do not know what kind of work I am looking for. I have no idea what work will be valuable and important to me. You have to try everything. The competition is high. A lot of youth. Yesterday's graduates know computer science very well and know all these mysterious words, magic passes and can speak clearly. The rules of the game have changed, although Unix, C ++, OOP remained. Long, meaningful, multi-stage interviews appeared, grueling interviews. Stricter requirements for applicants. Now no one takes a “student without experience” even for a ridiculous salary. Strange, I thought. “At the beginning of the 90s there was a demographic hole in which my potential competitors had to fall.” But this is not so. My gaps and flaws in knowledge are revealed, the consequences of many years of "artisanal practice" and the lack of a system in knowledge. It turned out that I don’t know in detail how no sorting algorithm works (all 20 years I’ve sorted it with the usual “sort” in all kinds of options and in all kinds of programming languages, which, in my opinion, sorts very well, but exactly how it never gets me I was worried, because he sorts in the best way!), I don’t know the principles of OOP (I used it since the times of the university, but apparently wrong, since I don’t know the right principles), the TCP / IP packet format (why should I know? knew when he wrote a diploma at a university, and then forgot!), algorithms on graphs and much more th ... But I somehow worked these 20 years and wrote excellent working software, which is still in use and will be used for a long time! How can it be? I’m surprised myself. how no sorting algorithm works (all 20 years sorted by the usual “sort” in all kinds of options and in all kinds of programming languages, which, in my opinion, sorts very well, but how exactly - it never bothered me, because it sorts with the best way!), I don’t know the principles of OOP (I used it from the time of the university, but apparently wrong, since I don’t know the right principles), the TCP / IP packet format (why should I know it? I knew when I wrote my diploma in University, and then forgot!), Algorithms on graphs and much more ... But I somehow worked al these 20 years and wrote an excellent working software that is still in use and will be used for a long time! How can it be? I’m surprised myself. how no sorting algorithm works (all 20 years sorted by the usual “sort” in all kinds of options and in all kinds of programming languages, which, in my opinion, sorts very well, but how exactly - it never bothered me, because it sorts with the best way!), I don’t know the principles of OOP (I used it from the time of the university, but apparently wrong, since I don’t know the right principles), the TCP / IP packet format (why should I know it? I knew when I wrote my diploma in University, and then forgot!), Algorithms on graphs and much more ... But I somehow worked al these 20 years and wrote an excellent working software that is still in use and will be used for a long time! How can it be? I’m surprised myself. because it sorts in the best way!), I don’t know the principles of OOP (I used it from the time of the university, but apparently wrong, since I don’t know the right principles), the TCP / IP packet format (why should I know it? I knew when I wrote a diploma at a university, and then forgot!), algorithms on graphs and much more ... But I somehow worked for these 20 years and wrote excellent working software, which is still in use and will be used for a long time! How can it be? I’m surprised myself. because it sorts in the best way!), I don’t know the principles of OOP (I used it from the time of the university, but apparently wrong, since I don’t know the right principles), the TCP / IP packet format (why should I know it? I knew when I wrote a diploma at a university, and then forgot!), algorithms on graphs and much more ... But I somehow worked for these 20 years and wrote excellent working software, which is still in use and will be used for a long time! How can it be? I’m surprised myself. How can it be? I’m surprised myself. How can it be? I’m surprised myself.
And the second round of entry into the “free market” was held in the same “warm and friendly atmosphere” as the first.
“Kaspersky” again suggested that I “get married” with him, as in the good old days (“Thank you, chap, but I don't play that games anymore, have already brainbenched all over”), “Yandex” detected all my applications on all the vacancies, this time in silence, even without an invitation to an interview (in 2007 he interviewed and “rejected”), and it seems that he included me in a life ban, because I already pretty tired of their HR, because I respond to almost all of their vacancies ; mail.ru did the same, but Parallels, Mirantis, and other software sharks “rejected” me at the interview. It’s unpleasant to feel “rejected”, but it’s more pleasant to understand that we have not mutually approached each other and have not been fit for many years We are too different. For example, I love poetry, literature, music and English. But does Yandex love it? Not sure.
On the part of employers: they can be understood. Their task is to find out the candidate’s knowledge on the widest possible set of topics in the shortest possible time. I recruited programmers myself and I know how non-trivial it is. For ready-made questions are meant ready-made template answers. Like Zhvanetsky: "... here is a list of your questions, here is a list of my answers." Favorite methods used in the interview, which I have gathered for many years of interview trips and which plunge me into perplexity, are stupid (I don’t know the answers to some of them even now), and, it seems to me, some of them have little relation programming, and they’re just being asked, because it’s a “proven way” and “everyone asks them.” My answers that do not suit employers are in parentheses:
Employers are absolutely right, of course. I understand why they do this. They select and weed out candidates, asking them the simplest questions to begin with. Then they move on to more complex ones, then more and more. The problem is that our approaches never coincide with them. Despite the fact that I am sure that in most companies where I went for an interview, I could work without any problems, but employers know better, and rightly so.
PS. In fact, I have no problems with work. This is just an excuse to describe my bizarre career. Finally, an employer was found who “drove into the red light”, ignoring all these numerous warnings about what I did not know, did not ask a single question on computer science and simply offered a job.
UPD Nevertheless, there are problems with work, because the only employer who wanted to, refused to take me in the end. Does anyone have a job? ..
Hard career as a programmer or what employers want.
With this article I want to show how strange and bizarre a programmer’s career can be (or a person involved in programming, because I probably can’t rank myself as a “programmers” caste). I don’t know exactly who I am, just like a rare breed of cheburashka who know all technologies from ASM to Python, and at the same time do not know anything seriously, whose algorithmic skills are as sticky as jellyfish in the Black Sea, and computer science is close to zero with frenzied work experience.
I am almost 40, and I am from the generation of handicraft and self-taught programmers who received higher technical education at a Soviet university in the early to mid-90s, when training was different and even such a concept as computer science was still absent in our universities. It was only abroad, and I did not know anything about such a term and related discipline until 2007, when I began to actively go for interviews and position myself on the labor market.
Maybe this story will be useful to young professionals who grope themselves in the IT industry in order to avoid any mistakes and build their career in a different way.
IT in my life.
These are the main milestones of my “glorious” IT biography. The most interesting thing in it, perhaps, was in the period 1990-1995 and 2000-2010.
- 1973-1985. From time to time I found pictures and photographs of computers in magazines and books and carefully examined them.
- 1981. I saw a micro calculator and was struck by its "features." I wanted to do the same on my own, but, of course, nothing came of this venture.
- 1985. Dreamed of a programmable calculator BZ-34. He wrote out the journal “Science and Life”, where the programs for him were published (the section “Man with a calculator”, later changed to “Man and a computer”). Later, in 1990 (?), I bought a MK-52 calculator, with an EPROM and an extended set of commands. I injected programs into it. I had no idea about any other computers. He only knew that there was an EU computer, but what it was - he really did not know. It seems that there was one in our school, and I saw her in the 4th grade.
- 1987. In the magazine "Model Designer" appeared a personal computer circuit "Specialist". He began to prepare a board for him, but there were no chips. I saw a friend "Mikrosha", loaded from a cassette recorder. This is an improved version of the "Specialist." I really liked it. Games, Tetris, Snake, BASIC. I rented a Mikrosha myself. I entered into it all the programs that were. I tried to write something myself on BASIC. I went to my friends, they had a Spectrum computer, booted from a tape recorder. I played games.
- 1988-1989. High school. 9th grade. Computer science. Agates. He wrote programs at BASIC according to the school course (geometry - whether the points lie on one straight line, all schools - Drafts, Fool (card game). Physical education school at MIEM. KUVT Yamaha. 1 year - Basic ". 2 year -" Pascal "and instrumental environments (DOS, Norton Commander). They wrote laboratory works and term papers (" MSX Basic "- a program for determining from 4 points whether the figure formed by them is a convex quadrangle, the program" Tic Tac Toe ”, Turbo-Pascal - file management programs).
- 1988. The Palace of Pioneers, a group on packet radio communications. First saw the IBM PC AT.
- 1990. Entered the Moscow State Institute of Electronics and Mathematics.
- 1990-1992 MSX Yamaha. Basic Pascal. Laboratory works.
- 1991. Finally, with great difficulty, he bought the Mikrosha. I tried to enter a program for playing chess there (from the magazine "Modeller-Designer"). I dealt with it for a very long time, drew a block diagram for several days and disassembled the operation algorithm. After entering the program did not work. Probably somewhere wrong in the set. The computer crashed and had to be reset by Reset. All the results of the many hours of “stuffing” were gone. It was necessary to write down the entered on the tape recorder, but I did not guess. From now on he was smarter. I recorded using the Save command.
- 1992. I saw the 286th and Windows 1.0 or 2.0 in the laboratory room at the institute. I really liked it.
- 1993. "Personnel" from the 3rd year. IBM PC XT. IBM PC AT. Turbo C 2.0 environment. Lectures and term paper. The Composer program under DOS. "Composes" the fugue on the right number of voices, in the right key and in the right fret. He wrote for several months at work with his father on IBM PC AT. Big computers. Unix The simplest C programs (finding a character in a string, replacing, etc.)
Of course, we studied Prolog, Turbo Basic, programmed in Pascal and from the 3rd course to C. Even earlier, in 1988-1989, we programmed in MSX Basic, and it was really great! There was also an intensive course in assembler and microprocessor architecture (then another 80286). There were some disciplines on parallel computing and supercomputers, which I never later needed in practice. - 1994. IBM PC AT. Turbo Basic Turbo Pascal. Turbo C. Laboratory work (the program "Solution of the Cauchy equation"). Course "Computer Graphics". Laboratory. The program for displaying an elephant three-dimensional figure. Programming EGA / VGA adapters. Course "Databanks". Dbase 3, 4. Clipper. Laboratory works. He wrote databases at the institute and with his father at Clipper. I saw Windows 3.1 and MS Access 2.0 with a friend at work, was shocked and really liked it (I didn’t understand anything there and was amazed how he fumbles in this). A friend programmed Access databases for a travel company.
- 1995. Unix. OOP. Borland C ++. Prolog. Turbo Prolog and ARITY-Prolog. Artificial Intelligence. Laboratory works. Alteration of the Composer program in C ++, adding classes, operators.
At the end of the university, all my fellow students dispersed: who went abroad, and who got a job as a programmer to write in “C ++ for databases”. Someone who was the most “advanced” even started writing software for video cards in assembler (then it was still some kind of squalor like S3 Trio and Trident with 256 KB of RAM on board). Only I went to undergraduate practice and a diploma in a certain state organization, where I got my initial work experience, studied Unix and MS Access, got acquainted with the principles of computer networks. It was the mid 90s. - 1995 - 1997. I decided to become a programmer or, at worst, a system administrator. Work in a design research institute by someone like a system administrator-programmer. VAX / VMS operating system. DECNet. Thick EtherNet. "Large computers", VAXCluster-s, terminals VT-220, VT-330, DECServer, DECPrintServer. Carried out backups, installation of new software, administration (user rights, rights to disks, files). Sun SparcStation, 32 MB RAM (this is some kind of unrealistic, crazy amount), 2 GB hard drive, Silicon Graphics, Alpha DecServer (DecWindows). The first time I worked properly with Windows, I studied it (on 386DX, then Pentium). OS Solaris, Irix, DecWindows.
- 1996. He defended his diploma on "Designing a cross-platform computer network." The seven-level OSI model. Interfacing different types of networks using common protocols (TCP / IP). The choice of hardware (routers, hubs, repeaters), evaluation of their cost, calculation of all kinds of characteristics (segment length, distance between repeaters, etc.).
- 1996-1997. At work, he attended the courses “SQL for end users”, “The XGL graphic library”, “Motif programming”, “OpenGL programming”, “Xlib programming”, “XView programming”.
All the courses that were, both for graphs (there are a lot of CAD-sheep for which Silicon Graphics were bought) and for database users (there was Oracle).
Administering Novell Netware 3.11 and 4.0 (in another building). Large network with ~ 100 staff, 2 Novell Netware servers, thin Ethernet.
I joined the development of the “Catalog Database of Industrial Application Equipment”, which I subsequently developed on my own (when all the standing specialists had already fallen from that job :). So began my own acquaintance with Access.
Windows 95 release, familiarity with it. - 1996. Connecting a company to the Internet (dialup at Elvis-Telecom).
- 1996 (?) Purchase of a computer home (486DX2-66). He improved the Composer program with the ability to print notes on a printer. I tried programming under Windows 3.1 (Borland C ++ 3.0, Win 3.1 SDK). It was difficult and confusing, but I was able to write a simple program that displays a window (I was familiar with the basic concepts of programming in multitask environments - the queue of events, resources, windows, controls, event handlers - partly at the institute, partly at Motif and OpenGL courses, but in Windows is all different). I tried to remake the Composer program for Windows using multimedia libraries. Very difficult, could not.
- 1996. There was a modem, FIDO, the Internet. He began to look for a new job. I tried to get a job in a company where I had UNIX, Informix, NT, etc. They asked me what “template”, “group by” is and what UNIX shells I know. I did not know anything from this list, and they did not take me.
- 1997, January-February. I tried to write a warehouse program on Access 2.0, to study Excel. I remember, Office 97 just came out, and I tried to get comfortable with it.
- February 1997 - December 2000. A completely unfamiliar person took me to my second job and without any interview just by ad in mo.job (probably, he nevertheless somehow implicitly checked my adequacy, but this test was successfully passed by me ) The salary was unbelievably high for a young specialist at the beginning of 1997. When asked why he took me and why without an interview, he said: “I just needed an Access-ist. Are you Access-ist? ” I said: "Yes, of course, I am Access-ist." I never asked such stupid questions again. Programmed on Access 2.0. Immediately given difficult tasks. At first it was hard, then I got used to it. He mastered Access 2.0 and Excel 5.0 thoroughly. Then Access'97 and Excel'97. ERWin. “1C-trade” has been released. I really didn’t like it. I looked a little bit Access'2000 and Powerbuilder 6.0. I liked Powerbuilder very much; I transferred part of the libraries to it. He moved the program from MSA 2.0 to MSA 97. He was also involved in anykey, administering Windows NT Server, implementing the mail system on MS Exchange 5.5, implementing Office'97, WINS, DHCP, MS Proxy 2.0, RRas and (the main achievement in this company, like me I think) transferring the system to MS SQL 7.0 / MSA'97 with data replication to a remote office. I personally installed 3 new Windows NT servers (SQL, Exchange, WINS, IIS, MS Proxy, RRas), implemented Faxmaker for Exchange Server. He wrote scripts for MS Exchange Server on VBScript. Having worked wonderfully in this company for several years and writing a lot of software, I began to think about a new job. the implementation of the mail system on MS Exchange 5.5, the implementation of Office'97, WINS, DHCP, MS Proxy 2.0, RRas and (the main achievement in this company, as I believe) the transfer of the system to MS SQL 7.0 / MSA'97 with data replication to the remote office . I personally installed 3 new Windows NT servers (SQL, Exchange, WINS, IIS, MS Proxy, RRas), implemented Faxmaker for Exchange Server. He wrote scripts for MS Exchange Server on VBScript. Having worked wonderfully in this company for several years and writing a lot of software, I began to think about a new job. the implementation of the mail system on MS Exchange 5.5, the implementation of Office'97, WINS, DHCP, MS Proxy 2.0, RRas and (the main achievement in this company, as I believe) the transfer of the system to MS SQL 7.0 / MSA'97 with data replication to the remote office . I personally installed 3 new Windows NT servers (SQL, Exchange, WINS, IIS, MS Proxy, RRas), implemented Faxmaker for Exchange Server. He wrote scripts for MS Exchange Server on VBScript. Having worked wonderfully in this company for several years and writing a lot of software, I began to think about a new job. MS Proxy, RRas), introduced Faxmaker for Exchange Server. He wrote scripts for MS Exchange Server on VBScript. Having worked wonderfully in this company for several years and writing a lot of software, I began to think about a new job. MS Proxy, RRas), introduced Faxmaker for Exchange Server. He wrote scripts for MS Exchange Server on VBScript. Having worked wonderfully in this company for several years and writing a lot of software, I began to think about a new job.
- Times have changed. It was the year 2000. In order to avoid stagnation in the upper part of the brain and the dominance of 1C, I went to one startup, where we studied interesting things until 2010. They also took me there completely without any interview after completing a simple test task. Over 10 years, many tens of megabytes of source code have been written in various programming languages (C ++, Python, Assembler), and a lot of wonderful projects have been made. I have studied Linux, C ++, Python perfectly.
- In the yard 2007 year. For the first time I began to worry, because the work ceased to satisfy me. It began to seem to me that my work was preparing for something “real”, it was just a rehearsal, developing skills in front of something important. But time passed, and the “real work” never began. A real one on which I can fully realize myself. It began to seem that it simply did not exist. I thought that my salary and interest in work would grow in direct proportion to time, but this did not happen. The salary trap began to strain me. Having entered the free market in 2007, I was perhaps the first to feel my inertness, uncompetitiveness and hopeless backwardness from technology. I got stuck in a startup, and I became numb. I started looking for a new job. My out-of-the-markedness bothered me more and more. He visited many companies, including very large software business players (Rambler, Yandex, Kaspersky, etc.). But everywhere the result is one - a complete and undoubted refusal. At this time, I first wondered: “Why?”, To which I still have not received a clear answer. I finally found out that there is computer science that everyone asks and about which I first heard. Is it really because I do not know computer science? But I wrote a huge amount of high-quality working software, I know a lot of technologies and industrial development! I began to rush back and forth, clutching at countless new technologies, urgently studying this very computer science, did not have time to study anything and was upset that I could not do anything. In the end, having not found a new job, I reconciled with my sad fate. All the time I was “out of stream”: when everyone used stl and boost, I practically did not use them, because I did not need to work; when the pythonists completely switched to django in 2008, I stubbornly ignored it, because I used the best framework from my point of view, I edited the files persistently in FAR, although there were a lot of wonderful convenient editors around, and my productivity did not suffer from of this. In the end, I started using all of these technologies, but only to be adequate to the market. although there were plenty of great convenient editors around, and my productivity didn't suffer from that. In the end, I started using all of these technologies, but only to be adequate to the market. although there were plenty of great convenient editors around, and my productivity didn't suffer from that. In the end, I started using all of these technologies, but only to be adequate to the market.
- But here - about a miracle! - I was invited to one startup, again, completely without any interview. And again, diligent work for several years, design, planning and edge, mountains of source codes, testing and bug fixes, hopes for the best, a feeling that this is a rehearsal for something important and new, disappointments and unsuccessful searches for a new job that went exactly the same way the same as in 2007, but in conditions of fiercer competition, which I felt literally behind my shoulders.
- And now the times have changed again. It’s already 2013 year. I'm still young, but age is already starting to take its toll. It seemed to me that during this time I had accumulated gigantic experience, that I can do anything, that I am in a competitive field and I have a fairly high level of competence, that I can work, that I am a “programmer”. “Now then,” I thought, “the time has certainly come for my most valuable and important work, for the work of my whole life.”
In fact, not so simple. I do not know what kind of work I am looking for. I have no idea what work will be valuable and important to me. You have to try everything. The competition is high. A lot of youth. Yesterday's graduates know computer science very well and know all these mysterious words, magic passes and can speak clearly. The rules of the game have changed, although Unix, C ++, OOP remained. Long, meaningful, multi-stage interviews appeared, grueling interviews. Stricter requirements for applicants. Now no one takes a “student without experience” even for a ridiculous salary. Strange, I thought. “At the beginning of the 90s there was a demographic hole in which my potential competitors had to fall.” But this is not so. My gaps and flaws in knowledge are revealed, the consequences of many years of "artisanal practice" and the lack of a system in knowledge. It turned out that I don’t know in detail how no sorting algorithm works (all 20 years I’ve sorted it with the usual “sort” in all kinds of options and in all kinds of programming languages, which, in my opinion, sorts very well, but exactly how it never gets me I was worried, because he sorts in the best way!), I don’t know the principles of OOP (I used it since the times of the university, but apparently wrong, since I don’t know the right principles), the TCP / IP packet format (why should I know? knew when he wrote a diploma at a university, and then forgot!), algorithms on graphs and much more th ... But I somehow worked these 20 years and wrote excellent working software, which is still in use and will be used for a long time! How can it be? I’m surprised myself. how no sorting algorithm works (all 20 years sorted by the usual “sort” in all kinds of options and in all kinds of programming languages, which, in my opinion, sorts very well, but how exactly - it never bothered me, because it sorts with the best way!), I don’t know the principles of OOP (I used it from the time of the university, but apparently wrong, since I don’t know the right principles), the TCP / IP packet format (why should I know it? I knew when I wrote my diploma in University, and then forgot!), Algorithms on graphs and much more ... But I somehow worked al these 20 years and wrote an excellent working software that is still in use and will be used for a long time! How can it be? I’m surprised myself. how no sorting algorithm works (all 20 years sorted by the usual “sort” in all kinds of options and in all kinds of programming languages, which, in my opinion, sorts very well, but how exactly - it never bothered me, because it sorts with the best way!), I don’t know the principles of OOP (I used it from the time of the university, but apparently wrong, since I don’t know the right principles), the TCP / IP packet format (why should I know it? I knew when I wrote my diploma in University, and then forgot!), Algorithms on graphs and much more ... But I somehow worked al these 20 years and wrote an excellent working software that is still in use and will be used for a long time! How can it be? I’m surprised myself. because it sorts in the best way!), I don’t know the principles of OOP (I used it from the time of the university, but apparently wrong, since I don’t know the right principles), the TCP / IP packet format (why should I know it? I knew when I wrote a diploma at a university, and then forgot!), algorithms on graphs and much more ... But I somehow worked for these 20 years and wrote excellent working software, which is still in use and will be used for a long time! How can it be? I’m surprised myself. because it sorts in the best way!), I don’t know the principles of OOP (I used it from the time of the university, but apparently wrong, since I don’t know the right principles), the TCP / IP packet format (why should I know it? I knew when I wrote a diploma at a university, and then forgot!), algorithms on graphs and much more ... But I somehow worked for these 20 years and wrote excellent working software, which is still in use and will be used for a long time! How can it be? I’m surprised myself. How can it be? I’m surprised myself. How can it be? I’m surprised myself.
And the second round of entry into the “free market” was held in the same “warm and friendly atmosphere” as the first.
“Kaspersky” again suggested that I “get married” with him, as in the good old days (“Thank you, chap, but I don't play that games anymore, have already brainbenched all over”), “Yandex” detected all my applications on all the vacancies, this time in silence, even without an invitation to an interview (in 2007 he interviewed and “rejected”), and it seems that he included me in a life ban, because I already pretty tired of their HR, because I respond to almost all of their vacancies ; mail.ru did the same, but Parallels, Mirantis, and other software sharks “rejected” me at the interview. It’s unpleasant to feel “rejected”, but it’s more pleasant to understand that we have not mutually approached each other and have not been fit for many years We are too different. For example, I love poetry, literature, music and English. But does Yandex love it? Not sure.
On the part of employers: they can be understood. Their task is to find out the candidate’s knowledge on the widest possible set of topics in the shortest possible time. I recruited programmers myself and I know how non-trivial it is. For ready-made questions are meant ready-made template answers. Like Zhvanetsky: "... here is a list of your questions, here is a list of my answers." Favorite methods used in the interview, which I have gathered for many years of interview trips and which plunge me into perplexity, are stupid (I don’t know the answers to some of them even now), and, it seems to me, some of them have little relation programming, and they’re just being asked, because it’s a “proven way” and “everyone asks them.” My answers that do not suit employers are in parentheses:
- Imagine you are giving a lecture in front of students. How would you explain the term “X” to students? (X == “dead end”, “context-free grammar”, “finite state machine”, “optimistic and pessimistic blocking”, “programming paradigm”, “data bus”). (From this list I can clearly explain only the "dead end", it is deadlock, because I often deal with it. I have no business with the other terms, and, accordingly, I can not explain them).
- Describe as much as possible what happens when you enter the address in the address bar of the browser (option: when you click on the link). (What exactly level of detail is meant? My story can last for a whole day, and our time is limited. First, if we are under Windows, a WM_CHAR Windows message is sent when entering text into the control ... no, more precisely, WM_NCHITTEST first, ... but if you start from the very beginning, then keystroke goes to the keyboard buffer ...).
- Describe what TCP / IP packets are exchanged when establishing an HTTP connection. (Unfortunately, I watched TCP / IP traffic repeatedly using ethereal, but I don’t remember the packet format even approximately).
- Describe what TCP / IP packets are exchanged when establishing an HTTPS connection. (Unfortunately, I did not watch TCP / IP traffic with an HTTPS connection). Is it true that HTTPS works on top of HTTP, or is the opposite true? (I don’t know, but I think that HTTPS over HTTP. Or HTTPS over TCP? Who knows ..).
- Describe how packets are delivered by the TCP transport protocol. How do we know which physical computer to deliver the package to? What ensures guaranteed delivery? (The delivery address is determined by the MAC address of the physical computer; packets are delivered through the gateway specified in the system settings if it is an external host. External or non-external, this is calculated from the ip address and mask).
- What is the algorithmic complexity of the best and worst possible algorithm for sorting an array of N elements? (The worst difficulty is O (N ^ 2), because each needs to be compared with each, the best is O (N * ln (N)). Why is it the best? I don’t remember. I read it in a book. I don’t remember which one).
- Rectangles with arrows are drawn, it is said that the rectangles are the modules, and the arrows are the dependencies between them, and the question is asked: “How to load all these modules? In general, what is it called? ”(We take and load the module dependencies recursively, then the module itself. What is it called - I don’t know and have no idea. This is called“ rectangles with arrows ”).
- Describe the differences between the demon and the usual process (I was asked such a question in 2007, and I still don’t know an exhaustive answer to it - the topic is truly inexhaustible, and I do not understand it thoroughly, although I wrote a huge number of demons for my working practice, when to this end, not fully understanding whether they have common memory or not, whether the stack is shared or not, and whether file descriptors are shared or not. It seems not, not shared. Or shared. I forgot already, in general. It was a long time ago, in 2004 th year.).
- What are the five principles of object-oriented programming? (I do not know, unfortunately, although I have been using OOP since 1993).
- How to use two stacks to make a queue? (I don’t know, but you can see it on the Internet).
- What methods of process synchronization do you know (option: which synchronization primitives do you know) (mutexs, semaphores, events)?
- What design patterns do you know (option: what programming patterns do you know) (singleton, object factory)?
- How to optimize an SQL query (option: what methods of optimizing SQL queries do you know) (look at the query plan, remove subqueries if possible, put down the missing indexes)?
Employers are absolutely right, of course. I understand why they do this. They select and weed out candidates, asking them the simplest questions to begin with. Then they move on to more complex ones, then more and more. The problem is that our approaches never coincide with them. Despite the fact that I am sure that in most companies where I went for an interview, I could work without any problems, but employers know better, and rightly so.
PS. In fact, I have no problems with work. This is just an excuse to describe my bizarre career. Finally, an employer was found who “drove into the red light”, ignoring all these numerous warnings about what I did not know, did not ask a single question on computer science and simply offered a job.
UPD Nevertheless, there are problems with work, because the only employer who wanted to, refused to take me in the end. Does anyone have a job? ..