1. Explain JavaScript?

JavaScript is a general-purpose programming language designed to let programmers of all skill levels control the behavior of software objects. The language is used most widely today in Web browsers whose software objects tend to represent a variety of HTML elements in a document and the document itself. But the language can be--and is--used with other kinds of objects in other environments. For example, Adobe Acrobat Forms uses JavaScript as its underlying scripting language to glue together objects that are unique to the forms generated by Adobe Acrobat. Therefore, it is important to distinguish JavaScript, the language, from the objects it can communicate with in any particular environment. When used for Web documents, the scripts go directly inside the HTML documents and are downloaded to the browser with the rest of the HTML tags and content.

JavaScript is a platform-independent, event-driven, interpreted client-side scripting and programming language developed by Netscape Communications Corp. and Sun Microsystems.

2. Explain CSS (Cascading Style Sheets)?

CSS (Cascading Style Sheets) is a technical specification that allows HTML document authors to attach formatting style sheets to HTML documents. When HTML documents are viewed as Web pages through Web browsers, the attached style sheets will alter the default style sheets embedded in browsers.

One of the fundamental features of CSS is that style sheets cascade; authors can attach a preferred style sheet, while the reader may have a personal style sheet to adjust for human or technological handicaps. The rules for resolving conflicts between different style sheets are defined in CSS specification.

CSS specification is maintained by W3C. You can download a copy of the specification at http://www.w3.org/.
Tutorials below are based Cascading Style Sheets, level 1, which has been widely accepted as the current standard.

3. Who is Using Ajax?

Google is making a huge investment in developing the Ajax approach. All of the major products Google has introduced over the last year - Orkut, Gmail, the latest beta version of Google Groups, Google Suggest, and Google Maps - are Ajax applications. (For more on the technical nuts and bolts of these Ajax implementations, check out these excellent analyses of Gmail, Google Suggest, and Google Maps.) Others are following suit: many of the features that people love in Flickr depend on Ajax, search engine applies similar techniques.
These projects demonstrate that Ajax is not only technically sound, but also practical for real-world applications. This isn't another technology that only works in a laboratory. And Ajax applications can be any size, from the very simple, single-function Google Suggest to the very complex and sophisticated Google Maps.
At Adaptive Path, we've been doing our own work with Ajax over the last several months, and we're realizing we've only scratched the surface of the rich interaction and responsiveness that Ajax applications can provide. Ajax is an important development for Web applications, and its importance is only going to grow. And because there are so many developers out there who already know how to use these technologies, we expect to see many more organizations following Google's lead in reaping the competitive advantage Ajax provides.

4. Which sized of websites have you worked on in the past?

Find a developer that has experience similar in size to the project you're putting together. Developers with high traffic, large scale site expertise may offer skills that smaller-sized developers don't, such as fine tuning apache or optimizing heavily hit SQL queries. On the other hand, developers who typically build smaller sites may have an eye for things that large scale developers don't, such as offering a greater level of visual creativity.

5. Explain HTML (Hyper Text Markup Language)?

HTML ( Hyper Text Markup Language) is the language used to write Web pages. You are looking at a Web page right now.
You can view HTML pages in two ways:
► One view is their appearance on a Web browser, just like this page -- colors, different text sizes, graphics.
► The other view is called "HTML Code" -- this is the code that tells the browser what to do.

6. Explain AJAX?

AJAX (Asynchronous JavaScript and XML) is a newly coined term for two powerful browser features that have been around for years, but were overlooked by many web developers until recently when applications such as Gmail, Google Suggest, and Google Maps hit the streets.

7. AJAX stands for?

AJAX stands for Asynchronous JavaScript and XML.
Asynchronous JavaScript and XML, or Ajax (pronounced "Aye-Jacks"), is a web development technique for creating interactive web applications using a combination of: XHTML (or HTML) and CSS for marking up and styling information. (XML is commonly used, although any format will work, including preformatted HTML, plain text, JSON and even EBML).

8. Which web browser do you use normaly?

There is a right answer to this question: all of them. A competent developer should be familiar with testing cross-browser compatibility by using all the major web browsers. Obviously they'll have a primary browser they use for surfing, but their answer to this question might be a good way for you to segue to asking how extensively they test cross-browser issues. Also, if it's some kind of css/html position seeing what toolbars they have installed can be a good metric of their skillset (I personally find the web developer toolbar for firefox to be invaluable).

9. Which browsers are support AJAX?

★ Internet Explorer 5.0 and up,
★ Opera 7.6 and up,
★ Netscape 7.1 and up,
★ Firefox 1.0 and up,
★ Safari 1.2 and up,
★ among others support AJAX.

10. How to show code?

Whether it's plain old HTML or freakishly advanced ruby on rails, ask for code samples. Source code can say more about a persons work habits than you think. Clean, elegant code can often be indicative of a methodical, capable developer. A resume may say 7+ years of perl experience, but that could mean 7 years of bad, unreadable perl. Also, make sure you ask for a lot of source code, not just a few isolated functions or pieces of HTML. Anyone can clean up 20-30 lines of code for an interview, you want to see the whole shebang. Don't ask for a full, functional app, but make sure it's enough that you can tell it's really what their code is like.

Download Interview PDF

11. How to acronym time?

Some might argue that knowing what acronyms actually stand for is trivial, but there are certain acronyms that a developer should have hard-wired into their head ( HTML or CSS, for example). This is the kind of question that might be better reserved for the phone interview to weed out those who are very unqualified.

12. Do you ever find any particular languages or technologies intimidating?

I've often felt that the more I learn, the less I feel like I know. Solving one mystery opens up ten others. Having the interviewee tell you their faults can reveal a lot about what they know.

13. How you fix code?

Give them some broken code written in the development language they are expected to know for the position. Have them go through it line by line and point out all the mistakes.

14. Which few sites you admire and why?

Find out what inspires them. While it doesn't necessarily "take one to know one," a great developer should always have a few impressive favorites.

15. How to write the table-less XHTML? Do you validate your code?

Weed out the old-school table-driven design junkies! Find a developer who uses HTML elements for what they were actually intended. Also, many developers will say they can go table-less, but when actually building sites they still use tables out of habit and/or convenience. Possibly draw up a quick navigation menu or article and have them write the markup for it. To be tricky, you could draw up tabular data - give them bonus points if they point out that a table should be used in that scenario.

16. How to show the portfolio?

A portfolio can say a lot about a developer. Do they have an eye for aesthetics? Are they more creatively or logically oriented? The most important thing is to look for is solid, extensive, COMPLETED projects. A half dozen mockups and/or hacked-out scripts is a sign of inexperience or incompetence.

17. Which are your favorite development tools and why?

If they say notepad you've obviously got the wrong person for the job. Not only can this help you gauge their level of competence, but it'll also see if they match the tools everyone else uses in-house.

18. What is w3c?

Standards compliance in web development is where everything is (hopefully?) going. Don't ask them to recite the w3c's mission statement or anything, but they should at least have a general idea of who they are.

19. What are the requirement of software Engineering?

Software Requirements are Descriptions and specifications of a system-A requirementis a condition or capability to which the system must conform and Define. A system is designed with certain functionality in mind and to ome up with that functionality and its specification right at the beginning is Requirement Engineering. Requirements Engineering-Eliciting, organizing, and documenting the requirements of the system-The process of establishing the services that the customer requires from a system and the constraints under which it operates and is developed Software requirements should be:
★ Clear
★ complete
★ Unambiguous
★ Quantitative

20. Explain SRS?

SRS stands for Software Requirement Specification.
It establishes the basis for agreement between customers and contractors or suppliers on what the software product is expected to do, as well as what it is not expected to do.
Some of the features of SRS are -
★ It sets permits a rigorous assessment of requirements before design can begin.
★ It sets the basis for software design, test, deployment, training etc. It also sets pre-requisite for a good design though it is not enough.
★ It sets basis for software enhancement and maintenance.
★ It sets Basis for Project plans like Scheduling and Estimation.

21. Explain Functional and Non Functional Requirements in Software Engineering?

Functional Requirements are the Expected functionality or services from the system.
Non - Functional Requirements are System property and constraints. Now Constraints can be on requirements itself. Some examples are of Response time, 24X7 availability of the system etc.

22. What main steps involved in developing a software?

The steps involved are Planning Analysis Design coding testing. After testing maintenance of the product in also involved.

23. How to Design Test Case?

This Question is often asked in Microsoft of from any other company who is looking to hire you for testing work. A test case will have 5 section.

24. Explain Sysem Testing?

IEEE Defines it as The process of testing an integrated hardware and software system to verify that the system meets its specified requirements. It is tested against system specification. May test manual procedures, restart and recovery, user interface, stress, performance. In System Testing, real data is used and sometimes users participation is also used.

25. Explain the Regression Testing?

Regression Testing accdoing to IEEE is "selective retesting of a system or component to verify that modifications have not caused unintended effects". It is repetition of tests intended to show that the software's behavior is unchanged, except insofar as required. It Can be done at each test level.

Download Interview PDF

26. Explain the Sanity Test?

It is used to Verify whether the build is ready for feature/requirement based testing).

27. Explain the Recovery Testing?

It is used in verifying software restart capabilities after a "disaster".

28. Explain the Security Testing?

It is ued toverify proper controls have been designed.

29. Explain the Usability Testing?

It evaluate the Human Computer Interface. Verifies for ease of use by end-users. Verifies ease of learning the software, including user documentation. Checks how effectively the software functions in supporting user tasks. Checks the ability to recover from user errors.

30. Explain the Configuration Testing?

It is used when software meant for different types of users. It also check that whether the software performs for all users.

31. Explain Alpha / Beta testing?

Probably one term which you must be aware of as we often hears this software is in Alpha phase and in Beta phase. Here Testing is done by representative set of potential users for trial use. Please Note - in-house (alpha testing) - external (beta testing).

32. Explain the Performance Testing?

It is verifying that the software meets the specified performance requirements (response time, volume.

33. Explain the User Acceptance Testing?

Testing conducted to determine whether or not a system satisfies its acceptance criteria and to enable the customer to determine whether or not to accept the system. It is Done against requirements and is done by actual users.

34. Explain the Functional Testing?

It checks that the functional specifications are correctly implemented. Can also check if Non Functional behavior is as per expectations.

35. Explain the Stress testing?

We impose abnormal input to stress the capabilities of the software. Input data volume, input data rate, processing time, utilization of memory, etc. are tested beyond the designed capacity.

36. Define the Unit Testing?

The Tools used in Unit Testing are debuggers, tracers and is Done by Programmers. Unit testing verifies the functioning in isolation of software pieces which are separately testable.

37. Explain about Installation Testing?

System testing conducted once again according to hardware configuration requirements. Installation procedures may also be verified.

38. Explain Objective Based Testing?

Some of the testing under this category and what they mean are as follows.

39. Define about Integration Testing?

According to IEEE, Integration Testing is An orderly progression of testing in which software elements, hardware elements, or both are combined and tested, to evaluate their interactions, until the entire system has been integrated. It Test against system design and Focuses on communication between modules start with one module, then add incrementally. Various Types of Integration Testing are: * big bang approach - Integrate Everything at once * top-down approach - Keep on breaking the system in parts one by one and than test each part. * bottom-up approach - Test the small parts first and than keep on integrating the system and keep on testing the bigger module of it. * mixed approach - Done by help of stubs (Dummy modules).

40. Explain Testing in Software Engineering?

Testing is running the program(or product) under various circumstances and conditions to find errors and bugs in it. This is important as releasing a faulty product will not only cause serious problems to the end user, it will also harm the companies reputation. There are various kind of Testing conditions and which one to use depends on type of product.

Download Interview PDF

41. What are some Features of RUP?

Some Features of RUP are -
★ Online Repository of Process Information and Description
★ Templates for all major artifacts, including:
- Requirements tracking (RequisitePro templates)
- Use Cases (Word Templates )
- Project Management (Project Templates)
★ Process Manuals describing key processes

42. List the types of Testing in Software Engineering?

As per Test Target, there is * Unit Testing * Integration Testing * System Testing As per Test Objective, there is * User Acceptance Testing * Installation Testing * Functional * Alpha / Beta testing * Regression * Performance * Stress * Usability * Configuration * Smoke (Sanity Test) Let's see them one by one.

43. Explain the advantage of PSP?

Advantage of PSP:
- To manage your work & assess/build your talents/skills
- To plan better
- To track your performance precisely
- To measure the quality of your software products

44. Explain RUP?

RUP stands for Rational Unified Process
It deals with -
★ Iterative software development process.
★ Visual Modeling of Systems
★ Quality Management
★ Change Control Management
★ Deals with the role, the activity, and the artifact
★ For managing OO Software Development

45. What are the characteristics of a good design? Also name some Design Tools?

Object Oriented Design Tools - Rational Rose, Rhapsody, Telelogic Tau G2
UI Design Tools - Rapid/Paper prototypes, Simple
SUMI (Software Usability Measurement Inventory ) - It will tell you how your product compares to this standardization base: whether you are about average for the market, below, or above.

46. Explain PSP?

PSP stands for Personal Software Process.
★ PSP Objectives are -
- To introduce individuals to a process-based approach to developing software
- To show individuals how to measure, estimate, schedule, and track their work
- To show individuals how to improve the quality of their programs
- In general PSP improves quality and productivity
- The time saved in testing because of better quality reduces time across the project by 20-40%

47. Explain SDLC?

A software cycle deals with various parts and phases from planning to testing and deploying. All these activities are carried out in different ways, as per the needs. Each way is known as a Software Development Lifecycle Model (SDLC).

48. Explain various SDLC models?

Some SDLC models
★ The Linear model (Waterfall)
- Separate and distinct phases of specification and development
- All activities in linear fashion
- Next phase starts only when first one is complete
* Evolutionary development
- Specification and development are interleaved (Spiral,incremental,prototype based,Rapid Application development)
- Incremental Model (Waterfall in iteration)
- RAD(Rapid Application Development) - Focus is on developing quality product in less time
- Spiral Model - We start from smaller module and keeps on building it like a spiral. It is also called Component based development.
★ Formal systems development
- A mathematical system model is formally transformed to an implementation
★ Agile Methods
- Inducing flexibility into development
★ Reuse-based development
- The system is assembled from existing components

49. Explain package diagram? What are collaboration diagram?

Collaboration Diagrams:
An alternative presentation of a sequence diagram. We uses boxes to describe objects, the lines connecting two boxes indicate that the objects collaborate with to one another and we use a multiplicity factor "*" to indicate that all elements of the aggregation receive a message.
Package Diagram:
Complete set of sequence Diagrams or Collaboration Diagrams of the system.

50. Explain Design patterns?

Design Patterns are simple and elegant solutions of commonly occuring problems in software design. Design Patterns make it easier to reuse successful designs and architectures of expereinced and Professional Designers.
There are three types of Patterns -
1) Creational - Concerned with creation of objects
2) Structural - Concerned with composition of classes or objects
3) Behavioral - characterize the ways in which classes and objects interact and distribute responsibility.

51. Explain sequence diagram?

Sequence Diagrams are pictorial representation of event happening according to the time line. In sequence Diagrams, we show respective class names by a small box and the event as a arrow.
Sequence Diagrams help in describing the normal course and alternative course of use cases.

52. Which use cases and class diagrams are in Software Engineering?

Use cases are graphical represenation of system parts and there interaction that is taking place. Normally we depict
the part of the systems who are involved in some activity as actors.
Class Diagrams are a part of designing proess. After coming up with use cases of the system, we take each use case and come up with the
classes that we need to perform that functionality. Each class will have Class Name, Attribues and Operations associate with it.
Some of the features of the classes are -
- Each class should have well defined responsibilities
- These responsibilities should be cohesive i.e. the system as a whole looks sensible and looks together.

53. Described the types of Architectures in Software Engineering?

An architecture expresses a fundamental structural organization schema for software systems. It provides a set of predefined subsystems, specifies their responsibilities, and includes rules and guidelines for organizing the relationships between them.
★ Object-Oriented/Abstract Data Style
★ Layered Hierarchies
★ Blackboard architecture
★ involving shared access to data with loosely coupled agents
★ Client/Server
★ Three tier Client/Server architectures
★ Peer-to-Peer Architecture

54. If I have no previous programming experience. Can I still be successful Software Engineer?

Any previous programming experience that you may have is certainly an asset, but it is not a requirement. It is a very common myth that SE is mainly programming. In fact, SE programs put a lot more emphasis on software development practice and process, including advanced areas of software architecture, requirements management, quality assurance and process improvement.

55. During interview, Why do not obsess over little mistakes that happen?

On more than one occasion, when I gave a star candidate a coding question, he zeroed in on the most optimally performant solution, identified the boundary cases, and began writing well-designed code. Midway through the problem, he makes a little error -- getting the order of operations wrong on the first try, or having an off-by-1 error, or forgetting to declare a variable.

When I point it out, the candidate responds with horror and then becomes so nervous that it impacts his performance during the rest of the interview.

The fear is unfounded. An awesome candidate making a little error is like a concert violinist playing a challenging Brahms concerto and hitting two wrong notes. Sure, the audience could tell that he made mistakes, but they don't get confused as to whether he's actually at Twinkle-Twinkle-Little-Star level.

Even if you completely bomb one question, many interviewers ask you multiple questions and will forgive a single mishap. Even bombing an entire interview is recoverable if the other interviews go well.

Download Interview PDF

56. If I like computers. Is Software Engineering is for me?

Software Engineering is all about using engineering principles for the production of software. If you like computers, like solving challenging problems and would like to make an impact on the world in which we all live, you should consider software engineering (SE).

Computer systems are an integral part of today's society. Software is a critical component of all computer systems, including the "embedded systems" used in communication networks, vehicles, consumer electronics, and medical devices. Software engineers have the knowledge and skills needed to produce high-quality, effective software on which all these computer systems depend.

BSSE program is one of the first four ABET accredited programs in the United States. Our curriculum provides a strong foundation upon which to build a successful SE career.

57. Why software engineers needed?

Computer systems are pervasive and have a major impact on society. Software is a critical component of all computer systems, including the "embedded systems" used in communication networks, vehicles, consumer electronics and medical devices. Software engineers have the knowledge and skills needed to produce high-quality, effective software on which all these computer systems depend.

58. Explain the difference between computer engineering (CE), computer science (CS), and software engineering (SE)?

While computer engineering programs include courses in software, SE programs incorporate much more detail in software development practice and process, including advanced areas of software architecture, requirements management, quality assurance, and process improvement. Software engineering programs do not stress computer hardware and electronics as much as computer engineering programs do.

On the other hand, software engineering is based on computer science, as other engineering disciplines are based on natural or life sciences. However, software engineering adds an emphasis on issues of process, design, measurement, analysis and verification. In general, scientists seek new knowledge, while engineers want to build things, solve problems, and help people. Both roles are important.

59. What is software engineering?

Some basic definitions of software engineering are:
The application of a disciplined engineering approach to the development of software systems.
A body of knowledge and experience in software development practice and process.