Hossam Blog

February 24, 2009

What Is Your Experience Level? (For .NET Developers Interviews Questions)

Filed under: .NET, Interviews, What Is — Hossam Ahmed @ 4:29 pm
Tags: , ,

Everyone who writes code

  • Describe the difference between a Thread and a Process?
  • What is a Windows Service and how does its lifecycle differ from a “standard” EXE?
  • What is the maximum amount of memory any single process on Windows can address? Is this different than the maximum virtual memory for the system? How would this affect a system design?
  • What is the difference between an EXE and a DLL?
  • What is strong-typing versus weak-typing? Which is preferred? Why?
  • Corillian’s product is a “Component Container.” Name at least 3 component containers that ship now with the Windows Server Family.
  • What is a PID? How is it useful when troubleshooting a system?
  • How many processes can listen on a single TCP/IP port?
  • What is the GAC? What problem does it solve ?

Mid-Level .NET Developer

  • Describe the difference between Interface-oriented, Object-oriented and Aspect-oriented programming.
  • Describe what an Interface is and how it’s different from a Class.
  • What is Reflection?
  • What is the difference between XML Web Services using ASMX and .NET Remoting using SOAP?
  • Are the type system represented by XmlSchema and the CLS isomorphic?
  • Conceptually, what is the difference between early-binding and late-binding?
  • Is using Assembly.Load a static reference or dynamic reference?
  • When would using Assembly.LoadFrom or Assembly.LoadFile be appropriate?
  • What is an Asssembly Qualified Name? Is it a filename? How is it different?
  • Is this valid? Assembly.Load(“foo.dll”);
  • How is a strongly-named assembly different from one that isn’t strongly-named?
  • Can DateTimes be null?
  • What is the JIT? What is NGEN? What are limitations and benefits of each?
  • How does the generational garbage collector in the .NET CLR manage object lifetime?
  • What is non-deterministic finalization?
  • What is the difference between Finalize() and Dispose()?
  • How is the using() pattern useful? What is IDisposable? How does it support deterministic finalization?
  • What does this useful command line do? tasklist /m “mscor*”
  • What is the difference between in-proc and out-of-proc?
  • What technology enables out-of-proc communication in .NET?
  • When you’re running a component within ASP.NET, what process is it running within on Windows XP? Windows 2000? Windows 2003?

Senior Developers/Architects

  • What’s wrong with a line like this? DateTime.Parse(myString);
  • What are PDBs? Where must they be located for debugging to work?
  • What is cyclomatic complexity and why is it important?
  • Write a standard lock() plus “double check” to create a critical section around a variable access.
  • What is FullTrust? Do GAC’ed assemblies have FullTrust?
  • What benefit does your code receive if you decorate it with attributes demanding specific Security permissions?
  • What does this do? gacutil /l find /i “Corillian”
  • What does this do? sn -t foo.dll
  • What ports must be open for DCOM over a firewall? What is the purpose of Port 135?
  • Contrast OOP and SOA. What are tenets of each?
  • How does the XmlSerializer work? What ACL permissions does a process using it require?
  • Why is catch(Exception) almost always a bad idea?
  • What is the difference between Debug.Write and Trace.Write? When should each be used?
  • What is the difference between a Debug and Release build? Is there a significant speed difference? Why or why not?
  • Does JITting occur per-assembly or per-method? How does this affect the working set?
  • Contrast the use of an abstract base class against an interface?
  • What is the difference between a.Equals(b) and a == b?
  • In the context of a comparison, what is object identity versus object equivalence?
  • How would one do a deep copy in .NET?
  • Explain current thinking around IClonable.
  • What is boxing?
  • Is string a value type or a reference type?
  • What is the significance of the “PropertySpecified” pattern used by the XmlSerializer? What problem does it attempt to solve?
  • Why are out parameters a bad idea in .NET? Are they?
  • Can attributes be placed on specific parameters to a method? Why is this useful?

C# Component Developers

  • Juxtapose the use of override with new. What is shadowing?
  • Explain the use of virtual, sealed, override, and abstract.
  • Explain the importance and use of each component of this string: Foo.Bar, Version=2.0.205.0, Culture=neutral, PublicKeyToken=593777ae2d274679d
  • Explain the differences between public, protected, private and internal.
  • What benefit do you get from using a Primary Interop Assembly (PIA)?
  • By what mechanism does NUnit know what methods to test?
  • What is the difference between:

catch(Exception e){throw e;}
and
catch(Exception e){throw;}

  • What is the difference between typeof(foo) and myFoo.GetType()?
  • Explain what’s happening in the first constructor:

public class c
{
            public c(string a) : this() {;};
            public c() {;}
}

How is this construct useful?

  • What is this? Can this be used within a static method?

ASP.NET (UI) Developers

  • Describe how a browser-based Form POST becomes a Server-Side event like Button1_OnClick.
  • What is a PostBack?
  • What is ViewState? How is it encoded? Is it encrypted? Who uses ViewState?
  • What is the element and what two ASP.NET technologies is it used for?
  • What three Session State providers are available in ASP.NET 1.1? What are the pros and cons of each?
  • What is Web Gardening? How would using it affect a design?
  • Given one ASP.NET application, how many application objects does it have on a single proc box? A dual? A dual with Web Gardening enabled? How would this affect a design?
  • Are threads reused in ASP.NET between reqeusts? Does every HttpRequest get its own thread? Should you use Thread Local storage with ASP.NET?
  • Is the [ThreadStatic] attribute useful in ASP.NET? Are there side effects? Good or bad?
  • Give an example of how using an HttpHandler could simplify an existing design that serves Check Images from an .aspx page.
  • What kinds of events can an HttpModule subscribe to? What influence can they have on an implementation? What can be done without recompiling the ASP.NET Application?
  • Describe ways to present an arbitrary endpoint (URL) and route requests to that endpoint to ASP.NET.
  • Explain how cookies work. Give an example of Cookie abuse.
  • Explain the importance of HttpRequest.ValidateInput()?
  • What kind of data is passed via HTTP Headers?
  • Juxtapose the HTTP verbs GET and POST. What is HEAD?
  • Name and describe at least a half dozen HTTP Status Codes and what they express to the requesting client.
  • How does if-not-modified-since work? How can it be programmatically implemented with ASP.NET?Explain <@OutputCache%> and the usage of VaryByParam, VaryByHeader.
  • How does VaryByCustom work?
  • How would one implement ASP.NET HTML output caching, caching outgoing versions of pages generated via all values of q= except where q=5 (as in http://localhost/page.aspx?q=5)?

Developers using XML

  • What is the purpose of XML Namespaces?
  • When is the DOM appropriate for use? When is it not? Are there size limitations?
  • What is the WS-I Basic Profile and why is it important?
  • Write a small XML document that uses a default namespace and a qualified (prefixed) namespace. Include elements from both namespace.
  • What is the one fundamental difference between Elements and Attributes?
  • What is the difference between Well-Formed XML and Valid XML?
  • How would you validate XML using .NET?
  • Why is this almost always a bad idea? When is it a good idea? myXmlDocument.SelectNodes(“//mynode”);
  • Describe the difference between pull-style parsers (XmlReader) and eventing-readers (Sax)
  • What is the difference between XPathDocument and XmlDocument? Describe situations where one should be used over the other.
  • What is the difference between an XML “Fragment” and an XML “Document.”
  • What does it meant to say “the canonical” form of XML?
  • Why is the XML InfoSet specification different from the Xml DOM? What does the InfoSet attempt to solve?
  • Contrast DTDs versus XSDs. What are their similarities and differences? Which is preferred and why?
  • Does System.Xml support DTDs? How?
  • Can any XML Schema be represented as an object graph? Vice versa?

Source: http://ebeid-soliman.blogspot.com/2008/07/what-great-net-developers-ought-to-know.html

September 13, 2006

What Is 3G?

Filed under: What Is — Hossam Ahmed @ 2:21 am

3G (or 3-G) is short for third-generation technology. It is used in the context of mobile phone standards. The services associated with 3G provide the ability to transfer simultaneously both voice data (a telephone call) and non-voice data (such as downloadinginformation, exchanging email, and instant messaging). In marketing 3G services, video telephony has often been used as the killer application for 3G.3G networks are not upgrades of 2G networks and do not operate on the same frequency spectrum; rather, entirely new networks need to be built and new frequencies need to be assigned to mobile operators. Induced euphoria led to huge spectrum-licensing fees in many countries, especially in Europe, where spectrum auctions went into the billions of euros. These spectrum licensing fees which were collected years before actual 3G development, together with the enormous investments necessary to build the all-new 3G networks, financially strained a number of mobile operators, delaying 3G roll-out worldwide except in Japan and South Korea, where such spectrum licensing fees were non-existent as the priority in those countries was set on national IT infrastructure development.

The first country which introduced 3G on a large commercial scale was Japan. In 2005, about 40% of subscribers used 3G networks only, with 2G being on the way out in Japan. It was expected that during 2006 the transition from 2G to 3G would be largely completed in Japan, and upgrades to the next 3.5G stage with 3 Mbit/s data rates were underway.

The successful 3G introduction in Japan showed that video telephony was not the killer application for 3G networks after all. The real-life usage of video telephony on 3G networks was found to be a small fraction of all services. On the other hand, downloading of music found strong acceptance by customers. Music download services in Japan were pioneered by KDDI with the EZchakuuta and Chaku Uta Full services.

Technically, 3G networks are not IEEE 802.11 networks. IEEE 802.11 networks are short range, primarily internet access networks, while 3G networks are wide area cellular telephone networks which evolved to incorporate high-speed internet access and video telephony to these networks.

Features:The most significant features offered by third generation (3G) mobile technologies are the momentous capacity and broadband capabilities to support greater numbers of voice and data customers – especially in urban centres – plus higher data rates at lower incremental cost than 2G.

By using the radio spectrum in bands identified, which is provided by the ITU for Third Generation IMT-2000 mobile services, it subsequently licensed to operators. 3G uses 5 MHz channel carrier width to deliver significantly higher data rates and increased capacity compared with 2G networks.

The 5 MHz channel carrier provides optimum use of radio resources for operators who have been granted large, contiguous blocks of spectrum. On the other hand, it also helps to reduce the cost to 3G networks while being capable of providing extremely high-speed data transmission to users.

It also allows the transmission of 384kbps for mobile systems and 2Mbps for stationary systems. 3G users are expected to have greater capacity and improved spectrum efficiency, which will allow them to access global roaming between different 3G networkings.

Standard 3G:

International Telecommunications Unit (ITU): IMT-2000 consists of five radio interfaces

  • W-CDMA
  • CDMA2000
  • CDMA2001
  • TD-CDMA / TD-SCDMA
  • UWC-136
  • DECT+

What Is MAML?

Filed under: What Is — Hossam Ahmed @ 1:50 am

MAML is part of a new approach to help in Windows Vista. This approach is both more integrated with the software and more focused on user tasks. MAML provides a structre in which you can write user assistance information, which can then be presented to the user in a variety of locations.

An example of help using this schema (http://schemas.microsoft.com/maml/dev/2004/10) can be found on the Microsoft Office Online Assistance. Additionally, if the user chooses to get the latest online content, that content is downloaded to the local machine as MAML and transformed at runtime into HTML for display, just as the local content is.

MAML Topic Types
The following types of topic are currently in use in the new MAML based Office Online pages:
MAML_training.gif Training: to learn more about using programs, focus on features or activity areas and allow to suggest best practices. Courses are self-paced, and include graphics, animation, audio, and practice sessions for hands-on experience. They have an inherent browse sequence
MAML_article.gif Article: up-to-date information in the form of how-to, and tips information.
MAML_topic.gif Topics :conceptual information about functionality and theory behind features.
MAML_disucssion.gif Discussion: online Community where you can interact with fellow users, get your questions answered, share ideas, and learn more about products and technologies that interest you.

Reference
-Vista Help Technical Overview

What Is Assistace Platform?

Filed under: What Is — Hossam Ahmed @ 1:43 am

Assistance Platform (AP) is part of a new approach to help in Windows Vista. This approach is both more integrated with the software and more focused on user tasks.

AP is the technology used to deliver Help for windows vista.

It takes the MAML content and presents it to the user in an appropriate location.

Rather than present user assistance information as one help file with a large Table Of Contents, it can now appear in the following locations:

-Directly in User Experience
- Embeded Help
- Super Tooltips
- Ribbon
- Help pannels
-In application Context
- Help window
-No Context
- Help Centre

AP Wokrflow (Programming Windows Help PDC03)

  1. Well-designed app UI
  2. Assistance directly in app UI
  3. Help Pane and Help Center
  4. User community
  5. Your product support center

What Is WYSIWYG?

Filed under: What Is — Hossam Ahmed @ 1:29 am
WYSIWYG is an acronym for What You See Is What You Get, used in computing to describe a system in which content during editing appears very similar to the final product. It is commonly used for word processors, but has other applications, such as Web (HTML) authoring.
Meaning:
  • The term describes a user interface that allows the user to view something very similar to the end result while the document or image is being created. For example, a user can view on screen how a document will look when it is printed to paper or displayed in a Web browser.
  • It implies the ability to modify the layout of a document without having to type or remember names of layout commands.

Modern software does a fairly good job of optimising the screen display for a particular type of output. For example, a word processor is optimised for output to a typical printer. The software often emulates the resolution of the printer in order to get as close as possible to WYSIWYG. However, that is not the main attraction of WYSIWYG, which is the ability of the user to be able to visualise what he or she is doing.

In many situations, the subtle differences between what you see and what you get are unimportant. In fact, applications may offer multiple WYSIWYG modes with different levels of “realism,” including:

  • A composition mode, in which the user sees something somewhat similar to the end result but with additional information useful while composing, such as section breaks and non-printing characters, and uses a layout that is more conducive to composing than to layout.
  • A layout mode, in which the user sees something very similar to the end result but with some additional information useful in ensuring that elements are properly aligned and spaced, such as margin lines.
  • A preview mode, in which the application attempts to present a representation that is as close to the final result as possible.

Applications may deliberately deviate or offer alternative composing layouts from a WYSIWYG because of overhead or the user’s preference to enter commands or code directly.

 Historical notes:

  • Before the invention of WYSIWYG, all text and control characters appeared in the same typeface and style with little indication of layout (margins, spacing, etc.). Users were required to enter code tags to indicate that some text should be in boldface, italics, or a different typeface or size. These applications used an arbitrary markup language to define the tags. Because of its simplicity, this method remains popular for some basic text editing applications (such as Wikipedia).
  • The phrase was originated by a newsletter published by Arlene and Jose Ramos, called WYSIWYG. It was created for the emerging Pre-Press industry going electronic in the late 1970s. After 3 years of publishing, the newsletter was sold to employees at the Stanford Research Institute in California. The first conference on the topic was organized by Jonathan Seybold and the first technology popularized at Xerox PARC during the late 1970s when the first WYSIWYG editor, Bravo, was created on the Alto. The Alto monitor (72 pixels per inch) was designed so that one full page of text could be seen and then printed on the first laser printers. When the text was laid out on the screen 72 PPI font metric files were used, but when printed 300 PPI files were used — thus one would occasionally find characters and words slightly off, a problem that continues to this day. (72 PPI came from the standard of 72 “points” per inch used in the commercial printing industry.)
  • Seybold and the researchers at PARC were simply reappropriating a popular catch phrase of the time originated by “Geraldine”, Flip Wilson’s drag persona from Rowan & Martin’s Laugh-In in the late 60s and and then on The Flip Wilson Show, (1970–1974).
  • The Apple Macintosh system was originally designed so that the screen resolution and the resolution of the dot-matrix printers sold by Apple were easily scaled: 72 PPI for the screen and 144 DPI for the printers. Thus, the on-screen output of programs such as MacWrite and MacPaint were easily translated to the printer output and allowed WYSIWYG editing. With the introduction of laser printers, resolutions deviated from even multiples of the screen resolution, making WYSIWYG harder to achieve.
  • Charles Simonyi, the PARC researcher responsible for Bravo, joined Microsoft in 1981 to start development of application programs at Microsoft. Hence, Bravo can be seen as the direct ancestor of Microsoft Word.
See Also:
WYSIWIS:
What You See Is What I See (used in context of distant multi-users applications, e.g. CSCW)
WYSIWYAF:
What You See Is What You Asked For (in reference to programs such as those used for manual typesetting such as TeX or troff, that what is retrieved from the system is what the user specified – in essence, a statement of GIGO)
WYSIAYG:
What You See Is All You Get (used to point out that a style of “heading” that refers to a specification of “Helvetica 15 bold” provides more useful information than a style of “Helvetica 15 bold” every time a heading is used)
WYSIWYM:
What You See Is What You Mean (You see what best conveys the message)
WYTYSIWYTYG:
What You Think You See Is What You Think You Get (/wɪtɪsiwɪtɪg/) (when a program claims to be WYSIWYG but isn’t)
WYCIWYG:
What You Cache is What You Get (“wyciwyg://” turns up occasionally in the address bar of Gecko-based Web browsers like Mozilla Firefox when the browser is retrieving cached information) -or – What You Create Is What You Get -or- What You Click Is What You Get)
WYGIWYG:
What You Get Is What You Get (an alternative approach to document formatting using markup languages, e.g. HTML, to define content and trusting the layout software to make it pretty enough)
WYSYHYG:
What You See You Hope You Get (/wɪzihɪg/) (a term ridiculing text mode word processing software; used in the Microsoft Windows Video Collection, a video distributed around 1991 on two VHS cassettes at promotional events).

September 12, 2006

What Is Open Source?

Filed under: What Is — Hossam Ahmed @ 8:34 pm

For all people who used to make their programs Open Source. and read this word here.. 2 words should jump in their brain.

FREE Like FREEDOM

Yea.. this is the most advantage of using Open Source as technique in programming.

Programmers publish their projects && Work For Free, Here Free does not mean working hard and for nothing.. NOO.

They publish their projects in sourceforge.net “for example”

because ideas want to be free

and to make sure that the programs will survive, update, look gr8 ;)

Open source describes practices in production and development that promote access to the end product’s sources. Some consider it as a philosophy, and others consider it as a pragmatic methodology. Before open source became widely adopted, developers and producers used a variety of phrases to describe the concept; the term open source gained popularity with the rise of the Internet and its enabling of diverse production models, communication paths, and interactive communities.

  • open source software became the most prominent face of open source.The open source model can allow for the concurrent use of different agendas and approaches in production, in contrast with more centralized models of development such as those typically used in commercial software companies
  • Open source hardware — hardware whose initial specification, usually in a software format, are published and made available to the public, enabling anyone to copy, modify and redistribute the hardware and source code without paying royalties or fees. Open source hardware evolves through community cooperation. These communities are composed of individual hardware/software developers, hobbyists, as well as very large companies. Examples of Open Source Hardware initiatives are:
    • Sun Microsystem’s OpenSPARC T1 Multicore processor. Sun states in their Press release: “The source code will be released under an Open Source Initiative (OSI)-approved open source license.”
    • Arduino, a microcontroller platform for hobbyists, artists and designers.

u will find a lot of products are using Open Source technique like

  • LAMP
  • Linux Tux Logo
  • Apache Apache Logo
  • MySQL MySQL Logo
  • PHP PHP LogoPerl Perl LogoPython Python Logo
  • OpenOffice.orgOpenOffice Logo

What Is the different between x64 and x86

Filed under: What Is — Hossam Ahmed @ 7:52 pm

well, x86 and x64 are approaches in how Processor work.

but the Main Difference is The Processor Registers.

(more…)

What Is Kernel?

Filed under: What Is — Hossam Ahmed @ 7:19 pm

What is Kernel?
this is a great question.. and for who dunn know what is Kernel or never heard about this word.
Kernel is the Heart of most Computer Operating Systems.
it’s job managing System’s resources and communications between hardware and software.

Kernel’s Tasks:
The kernel’s task is to manage the computer’s resources and allow other programs to run and use these resources.
in a computers, the most central part is the Central Process Unit “CPU or Processor”, which actually runs different programs the way and for the amount of time dictated by the kernel

there are many different kernel design approaches like:

  • Monolithic Kernels.
  • MicroKernels.
  • Hybrid Kernels.
  • NanoKernels
  • ExoKernels

Kernel Development Overview:
Kernel development is considered one of the most complex and difficult tasks in programming.

Its central position in an operating system implies the necessity for good performance, which defines the kernel as a critical piece of software and makes its correct design and implementation difficult.

A kernel might even not be allowed to use the abstraction mechanisms it provides to other software. Many reasons prevent a kernel from using facilities it provides, such as:

  • interrupt management
  • memory management
  • and lack of reentrancy, thus making its development even more difficult for software engineers.

Kernel Development under:

  • Time-Sharing Operating Systems.
  • Unix.
  • MAC OS.
  • Windows.

Process Management:

The main task of an operating system kernel is to allow the execution of applications and support them with features such as hardware abstractions. To run an application, a kernel must load the file containing the code for the application to memory (and eventually set up its own address space), set up a stack for the program and branch to a given location inside the program, thus starting its execution.

Multi-tasking kernels are able to give the user the illusion that the number of processes being run simultaneously on the computer is higher than the maximum number of processes the computer is physically able to run simultaneously. Typically, the number of processes a system may run simultaneously is equal to the number of CPUs installed

The operating system might also support multiprocessors, in that case different programs and threads may run on different processors. To allow a kernel to run on such a system, it has to be extensively modified to make it “re-entrant” or “interruptible”, meaning that it can be called in the midst of doing something else. Once this conversion is complete, programs running at the same time on different processors can safely call the kernel. The kernel must also provide a way to synchronize memory access on different processors, which makes memory management and process management two highly inter-related topics

Memory Management:

The kernel has full access to the system’s memory and must allow userland programs to access this memory safely as they require it. Often the first step in doing this is virtual addressing, usually achieved by paging and/or segmentation. Virtual addressing allows the kernel to make a given physical address appear to be another address, the virtual address. This allows every program to believe that it is the only one (apart from the kernel) running and thus prevents applications from crashing each other.[citation needed] In fact, a program’s virtual address may even refer to data which is not currently in memory. The layer of indirection provided by virtual addressing allows the operating system to use other data stores, like a hard drive, to store what would otherwise have to remain in main memory (RAM). As a result, operating systems can allow programs to use more memory than the system has physically available. When a program needs data which is not currently in RAM, the OS writes the contents of a currently unused memory block to disk and replaces it with the data requested by the program.[citation needed] Virtual addressing also allows creation of virtual partitions of memory in two disjointed areas, one being reserved for the kernel (kernel space) and the other for the applications (user space). This fundamental partition of memory space has contributed much to current designs of actual generalistic kernels.

Device Management:

To perform, an operating system (OS) needs access to the peripherals connected to the computer, which are controlled through device drivers, which must be written by the developers and/or be provided by the manufacturers of the hardware. For example, to show the user something on the screen, the kernel relies on its monitor driver (such as VGA or VESA) which is then responsible for actually plotting the character/pixel.[citation needed] A device manager first performs a scan on different hardware buses, such as Peripheral Component Interconnect (PCI) or Universal Serial Bus (USB), to detect installed devices, then searches for the appropriate drivers. As device management is a very OS-specific topic, these drivers are handled differently by each kind of kernel design, but in every case, the kernel has to provide the I/O to allow drivers to physically access their devices through some port or memory location. Very important decisions have to be made when designing the device management system, as every access involves context switches, making the operation very CPU-intensive and easily causing a significant performance overhead.

System Calls:

To actually perform useful work, a userland program must be able to access the services provided by the kernel. This is implemented differently by each kernel, but most provide a C library or an API, which in turn invoke the related kernel functions either through the inter-process communication system, software interrupts or shared memory.

What Is PC?

Filed under: What Is — Hossam Ahmed @ 4:36 pm

PC Is a personal computer which usually a microcomputer whose price, size, and capabilities make it suitable for personal usage.The term was popularized by Apple Computer with the Apple II in the late-1970s and early-1980s, and afterwards by IBM with the IBM PC.

History:

  • Mainframes and large minicomputers .
  • Computers @ Home.
  • Business Computers.
  • Notebook “Laptop”.

Computer Categories:

Personal computers can be categorized by size and portability:

  • Desktop computers
  • Laptop or notebooks
  • Personal digital assistants (PDAs)
  • Portable computers
  • Tablet computers
  • Wearable computers

PC Consists of:

  • Motherboard
  • Central processing unit “Processor”
  • Main memory
  • Mass storage
  • Graphics – Video card

Who use PC?

Personal computers are normally operated by one user at a time to perform such general purpose tasks as word processing, internet browsing, internet faxing, emailing and other digital messaging, multimedia playback, video game play, computer programming etc.

The user of a modern personal computer may have significant knowledge of the operating environment and application programs, but is not necessarily interested in programming nor even able to write programs for the computer. Therefore, most software written primarily for personal computers tends to be designed with simplicity of use, or “user-friendliness” in mind. However, the software industry continuously provide a wide range of new products for use in personal computers, targeted at both the expert and the non-expert user.

Today:

During the 1990s, the power of personal computers increased radically, blurring the formerly sharp distinction between personal computers and multi-user computers, such as mainframes. Today higher-end computers often distinguish themselves from personal computers by greater reliability or greater ability to multitask, rather than by brute CPU ability.

In today’s common usage, personal computer and PC usually indicate an IBM PC compatible. Due to this association, some manufacturers of personal computers that are not IBM PCs avoid explicitly using the terms to describe their products. Mostly, the term PC is used to describe personal computers that use Microsoft Windows operating systems.

Blog at WordPress.com.