This post is worth $1000 if you are looking to get hired by Vmware
Yes I could have easily charged readers $100 each & made $1000 just for this post.
But I'm giving it for free - reason this article is contributed by one of my blog reader. I really thank him & appreciate his support. He wants to remain anonymous contributor but I'll call him Mr.XV .Thanks XV I appreciate you taking time & writing this article for the blog. I'd request you to write more & share them with 1000s of visitors reading this blog daily.
Seems like these days Vmware company is on a roll & its hiring like anything. Reason I'm saying this 'cause lots of my site visitors either search for "Vmware interview questions" or email me asking for that. Also I'm getting quite a few emails with blogreaders asking how to prepare for a Developer job profile in Vmware Inc. Storage knowledge + VMware expertise has been a killer combination that helped lotsa my readers get good jobs in recent months.
One of my Storage Jobs Blog reader who attended a similar interview wrote & shared his experience & permitted me to publish the same in this post. This post is worth $1000 'cause it can get you a job worth $5000++ per month. But this is like an index article. It just gives an outline of what you need to cover if you're interested in Vmware's developer job openings.I know the expectations for this kind of a job profile is huge. I know not everyone can give this a try. But for those who want to reach out to the Virtualization market leader & love to be part of their development team here's a checklist of what you should cover before attempting their job interview.
Mr.XV one of my blogreader has been nice to write summarising from his experience of attempting some of these Vmware developer job interviews. Thanks XV for writing & sharing this info with the blog readers.I would love to see you write more about your adventures of job hunting in California.
Topics to read up:
Be thorough with OS fundamental topics like
System Calls - what they are, how they work (especially in Intel x86 architecture)- 'cause its x86 architecture on which Vmware's ESX,Vmware Infrastructure & most of Vmware's products are built on.
Processes and threads - basic concepts, differences between them, fork/exec working, Copy on write.Copy-on-write (sometimes referred to as "COW") is an optimization strategy used in computer programming. The fundamental idea is that if multiple callers ask for resources which are initially indistinguishable, you can give them pointers to the same resource. This function can be maintained until a caller tries to modify its "copy" of the resource, at which point a true private copy is created to prevent the changes becoming visible to everyone else. All of this happens transparently to the callers. The primary advantage is that if a caller never makes any modifications, no private copy need ever be created.
Process scheduling - basics of cpu scheduling, Multi-processing, scheduling
algorithms like RR(Round-Robin), FIFO(First In First Out), dynamic priority, Linux O(1) scheduler etc
File systems - VFS, basics of how VFS handling file open and file read/write,
Page Cache concepts. virtual file system (VFS) or virtual filesystem switch is an abstraction layer on top of a more concrete file system. The purpose of a VFS is to allow client applications to access different types of concrete file systems in a uniform way. A VFS can, for example, be used to access local and network storage devices transparently without the client application noticing the difference. It can be used to bridge the differences in Windows, Mac OS and Unix filesystems, so that applications can access files on local file systems of those types without having to know what type of file system they're accessing.
Get to know about VMFS if you have time.(Virtual Machine File System) is VMware, Inc.'s cluster file system
Device drivers concepts - character drivers vs block drivers and differences, How a typical device driver gets dynamically loaded into kernel and gets it work processed
OS synchronization concepts - semaphores, spinlocks etc
Interrupt handling
Memory Manager - basic concepts, Page table handling, Demand Paging, Swapping, malloc/free handling, Process Address space handling
Other concepts you can read up on based on your expected job profile and background - DMA, x86 architecure, x86 programming, Caching and cache coherency concepts, Specific file systems internals like ext3, reiserfs, ufs etc, distributed computing and clustering concepts
DMA: is a feature of modern computers that allows certain hardware subsystems within the computer to access system memory for reading and/or writing independently of the central processing unit. Many hardware systems use DMA including disk drive controllers, graphics cards, network cards, and sound cards. Computers that have DMA channels can transfer data to and from devices with much less CPU overhead than computers without a DMA channel.
Without DMA, using programmed input/output (PIO) mode, the CPU is typically fully occupied for the entire duration of the read or write operation and is thus unavailable to perform other work. With DMA, the CPU would initiate the transfer, do other operations while the transfer is in progress, and receive an interrupt from the DMA controller once the operation has been done. This is especially useful in real-time computing applications where not stalling behind concurrent operations is critical.
One book that is good for the above basics is
Operating System concepts by Silberschatz, Galvin
Other indepth book is
Solaris Internals &/or Understanding the Linux kernel v3 by Bovett,Cessati