├── .DS_Store ├── resume-tutorials ├── .DS_Store ├── CV_Template.jpg ├── how-to-tailor-make-cv.md └── complete-cv-guide.md ├── IMSI └── interview-questions.md ├── Arbisoft └── interview-questions.md ├── humbike └── interview-questions.md ├── technical-interview-checklist ├── database.md ├── miscallaneous.md ├── object-oriented-programming.md ├── git.md └── data-structures-n-algorithms.md ├── SSI └── interview-questions.md ├── README.md ├── red-math └── interview-questions.md ├── Tkxel └── interview-questions.md ├── frag-games └── interview-questions.md ├── systems-ltd └── interview-questions.md ├── Uworx └── interview-questions.md ├── tintash └── interview-questions.md ├── caramel-studios └── interview-questions.md ├── techlogix └── interview-questions.md ├── venture-drive └── interview-questions.md ├── xavor └── interview-questions.md ├── Miscalleneous ├── interview-questions.md └── typical-backend-questions.md ├── i2c └── interview-questions.md ├── General-interview-questions └── interview-questions.md └── LICENSE /.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ansabgillani/fresh-grad-hiring-interview-questions/HEAD/.DS_Store -------------------------------------------------------------------------------- /resume-tutorials/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ansabgillani/fresh-grad-hiring-interview-questions/HEAD/resume-tutorials/.DS_Store -------------------------------------------------------------------------------- /resume-tutorials/CV_Template.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ansabgillani/fresh-grad-hiring-interview-questions/HEAD/resume-tutorials/CV_Template.jpg -------------------------------------------------------------------------------- /IMSI/interview-questions.md: -------------------------------------------------------------------------------- 1 | # Questions 2 | These questions were asked during IMSI interviews. 3 | 4 | ## General: 5 | 1. Can you give us 20 hours per week right now? 6 | 2. Which language would you prefer working in? 7 | -------------------------------------------------------------------------------- /Arbisoft/interview-questions.md: -------------------------------------------------------------------------------- 1 | # Questions 2 | These questions were asked during Arbisoft interviews. 3 | 4 | ## HR (after 12 hour test) 5 | 1. What was the best thing about today’s test 6 | 2. Do you plan to go abroad 7 | 3. If we hire you, will you stick around for 2-3 years? 8 | 9 | 10 | ## Online Screening Test 11 | You can see the example on [Arbisoft Testing Website](https://test.arbisoft.com/) -------------------------------------------------------------------------------- /humbike/interview-questions.md: -------------------------------------------------------------------------------- 1 | # Questions 2 | These questions were asked during HumBike interviews. 3 | 4 | ## Android: 5 | 1. Any point of starting a new thread in a recourse demanding service? 6 | 2. What's a sticky intent? 7 | 3. What is intent service 8 | 4. Difference between Async Task and Service 9 | 5. Would you prefer AsyncTask over Java Thread. Why? 10 | 11 | ## Programming: 12 | 1. Given a graph with N nodes, find the shortest line that connects A, B and C. 13 | 14 | ## HR: 15 | 1. Any criminal history? -------------------------------------------------------------------------------- /technical-interview-checklist/database.md: -------------------------------------------------------------------------------- 1 | # Topics to study for Databases 2 | These topics to study for DB. 3 | 4 | - DDL, DML, DQL,DCL 5 | - Indexing & its methods 6 | - Find the Employees who hired in the Last n months 7 | - Deadlock and methods to remove it 8 | - Anomalies in Database 9 | - Normalization 10 | - Joins and its Types 11 | - Difference between Truncate and Drop 12 | - Composite Key, Primary Key, Foreign Key 13 | - Relationships 14 | - Transaction, Commit & Rollback 15 | - Views & Triggers 16 | - ACID Properties 17 | - SQL Queries 18 | - Stored Procedures 19 | - Subqueries -------------------------------------------------------------------------------- /technical-interview-checklist/miscallaneous.md: -------------------------------------------------------------------------------- 1 | # Topics to study for Miscallaneous concepts 2 | These topics to study for Miscallaneous. 3 | 4 | - SDLC Models 5 | - SDLC Phases 6 | - Scrum Framework 7 | - Whitebox, Greybox and Blackbox Testing 8 | - Scheduling Algorithms 9 | - MVC Framework 10 | - Unit testing & Integration Testing 11 | - HTTP session 12 | - TCP/IP model vs OSI model 13 | - SOAP vs Restful API 14 | - Check if a string is a palindrome or not 15 | - POST & GET Request 16 | - Cookies 17 | - Program to print a Fibonacci series 18 | - Program to print a Factorial of a number -------------------------------------------------------------------------------- /technical-interview-checklist/object-oriented-programming.md: -------------------------------------------------------------------------------- 1 | # Topics to study for Object Oriented Programming 2 | These topics to study for OOP. 3 | 4 | - Pillars of OOP 5 | - Types of Inheritance 6 | - What is Diamond Problem 7 | - Compile Time & Runtime Polymorphism 8 | - Constructor & Destructor 9 | - Access Modifiers 10 | - Static Keyword in Class, Method & Field 11 | - Final Keyword in Class, Method & Field 12 | - Composition , Aggregation & Association 13 | - Multithreading 14 | - Singleton Pattern & Factory Pattern 15 | - SOLID Principles 16 | - Coupling & Cohesion 17 | - Abstraction vs Encapsulation 18 | - Abstract Class vs Interface Class 19 | - Overriding & Overloading 20 | - Static & Dynamic Binding -------------------------------------------------------------------------------- /SSI/interview-questions.md: -------------------------------------------------------------------------------- 1 | # SSI 2 | 3 | ## Management Interview (just a couple of senior executives asking you some basic questions) 4 | 1. Tell us about your education. 5 | 2. Tell us about your FYP 6 | 3. Between iOS and Android, which one has the dominant market share? 7 | 4. Do you see Microsoft's mobile platform (The windows phone) catching up with the others? 8 | 5. Explain the term “Internet of Things” 9 | 6. How many tennis balls can you fit in this room? 10 | 7. Do you have any non CS related hobbies? 11 | 8. Why are manhole covers round? 12 | 9. Some general knowledge question like, who is vice chancellor of germany. 13 | 10. What are you interested in? (in the context of CS e.g: Android development etc) 14 | 11. Why are you interested in the above mentioned field? 15 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # fresh-grad-hiring-interview-questions 2 | These are the fresh-grad hiring interview questions that were accumulated through interviewees over the past two years. 3 | 4 | > Please note that this repository is merely accumulation of different organizations and is created for guidance and preparation purposes. If any organization feels it as a violation of there intellectual property, please reach out to me and I will remove your questions from the repository. 5 | 6 | ## Notes 7 | 1. Before adding a question / category / software house, make sure your question / category / software house does NOT already exist. Use the outline on the left to see if a company already exists. 8 | 2. Add question / category / software house according to the format (numbers etc) 9 | 3. It’s your own thing. Its quality will be only as good as you would want it to be! 10 | -------------------------------------------------------------------------------- /red-math/interview-questions.md: -------------------------------------------------------------------------------- 1 | # Questions 2 | These questions were asked during RedMath interviews. 3 | 4 | ## FYP 5 | 1. Describe your fyp in detail. 6 | 2. What was your role in fyp? 7 | 3. Technologies used? 8 | 4. How many members? 9 | 10 | ## Web Programming 11 | 1. What are web services? 12 | 2. SOAP vs RestFul 13 | 3. What is WSDL? 14 | 4. Have you ever made a web service? How? 15 | 5. Have you made a project involving any website? 16 | 6. Which framework did you use? 17 | 7. Which language you worked on? 18 | 8. Explain MVC. Any framework used for MVC 19 | 9. What is Sql injection and how to prevent it? 20 | 21 | ## Testing 22 | 1. What is unit testing? 23 | 2. Write a code for unit test. 24 | 25 | ## OOAD 26 | 1. How many design patterns do you know? Name them 27 | 2. Write code for any design pattern you have worked on. 28 | 3. Inheritance vs Polymorphism 29 | 4. Ever heard about mutable classes. 30 | 5. Know anything about angular js or node js. Ever worked with them? 31 | 32 | ## Software Engineering 33 | 1. Agile development 34 | 2. What is scrum? 35 | 3. Any sdlc used in you fyp? 36 | 37 | ## General 38 | 1. Give a brief introduction about yourself. 39 | 2. Describe other projects you worked on written in your CV. 40 | 3. In which programming languages have you worked on? 41 | 4. They provide you with questions and you have to write pseudo codes and sql queries 42 | 5. What are your future plans? 43 | 6. If you answer any question with a terminology, they are going to ask about it. You need to know everything about what you are saying. 44 | -------------------------------------------------------------------------------- /technical-interview-checklist/git.md: -------------------------------------------------------------------------------- 1 | # Git commands that may be asked in your interview: 2 | 3 | 4 | - git init -> Initialize an existing directory as a Git repository 5 | - git clone [url] -> Retrieve an entire repository from a hosted location via URL 6 | - git status -> Show modified files in working directory, staged for your next commit 7 | - git add [file] -> Add a file as it looks now to your next commit (stage) 8 | - git reset [file] -> Unstage a file while retaining the changes in working directory 9 | - git diff -> Difference of what is changed but not staged. 10 | - git diff --staged -> Diff of what is staged but not yet commited 11 | - git commit -m “[descriptive message]” -> commit your staged content as a new commit snapshot. 12 | - git branch -> list your branches. a * will appear next to the currently active branch. 13 | - git branch [branch-name] -> create a new branch at the current commit 14 | - git checkout [branch-name] -> switch to another branch and check it out into your working directory. 15 | - git merge [branch] -> merge the specified branch’s history into the current one 16 | - git log -> show all commits in the current branch’s history. 17 | - git merge [alias]/[branch] -> merge a remote branch into your current branch to bring it up to date. 18 | - git remote add [alias] [url] -> add a git URL as an alias. 19 | - git fetch [alias] -> fetch down all the branches from that Git remote 20 | - git push [alias] [branch] -> Transmit local branch commits to the remote repository branch 21 | - git pull [alias] [branch] -> fetch and merge any commits from the tracking remote branch. 22 | -------------------------------------------------------------------------------- /Tkxel/interview-questions.md: -------------------------------------------------------------------------------- 1 | # Questions 2 | These questions were asked during Tkxel interviews. 3 | 4 | ## OOAD 5 | 1. What is OOAD and why do we need it? 6 | 2. What is polymorphism? 7 | 3. What is the difference between Function overloading and overriding? 8 | 4. What is the keyword static? (In all contexts) 9 | 5. When are static members initialized? 10 | 11 | ## DS/Algorithms 12 | 1. What’s your favorite data structure? 13 | 2. Name the types of sorting algorithms? 14 | 3. What’s the most efficient sorting algorithm you know? 15 | 4. What is merge sort? What is its time complexity? 16 | 17 | ## DB 18 | 1. Design a database that represents the management hierarchy at the company. 19 | 2. Write a query to get the name of an employee and the name of his direct supervisor from the previously created DB. 20 | 3. What are joins? (All kinds) 21 | 22 | ## OS 23 | 1. What is paging? 24 | 2. What are semaphores and mutex locks? Differentiate between them. 25 | 3. What are race conditions. 26 | 4. List some scheduling algorithms. 27 | 28 | ## Analytical 29 | 1. You’re given 1 3L jug and 5L jug, how will you get 4L of water from pond using the 2? 30 | 2. What day of the week will it be 100 days from now? (Write a general formula) 31 | 32 | ## Programming 33 | 1. Differentiate between shallow and deep copy. 34 | 2. What happens when an object is created? (Behind the scenes, i.e constructor is called, memory allocation etc) 35 | 36 | ## Other 37 | 1. Explain your FYP 38 | 2. Introduce yourself (this was the first question in the interview :p) 39 | 3. What languages are you comfortable working with? (Specifically asked about Java) 40 | -------------------------------------------------------------------------------- /frag-games/interview-questions.md: -------------------------------------------------------------------------------- 1 | # Questions 2 | These questions were asked during frag-games interviews. 3 | 4 | ## C++: 5 | 1. What are the issues with lines 17 and 19? 6 | ``` 7 | 1 int* foo() 8 | 2 { 9 | 3 int a = 10; 10 | 4 return &a; 11 | 5 } 12 | 6 13 | 7 14 | 8 class Yolo 15 | 9 { 16 | 10 private: 17 | 11 static int a = 10; 18 | 12 } 19 | 13 20 | 14 int main() 21 | 15 { 22 | 16 int *test = foo(); 23 | 17 cout<< *test; 24 | 18 25 | 19 cout< Tip: if you and your FYP member(s) are appearing for the interview, make sure all of you are on the same page. Any contradiction will be easily caught. 34 | -------------------------------------------------------------------------------- /tintash/interview-questions.md: -------------------------------------------------------------------------------- 1 | # Questions 2 | These questions were asked during tintash interviews. 3 | 4 | ## Unity: 5 | 1. Difference b/w transform and translate 6 | 2. Fixed and simple update function 7 | 3. How the built in functions in script are called. 8 | 4. What is a Mesh ? 9 | 5. What is a collider ? 10 | 11 | ## DS: 12 | 1. Write a recursive function to reverse the nodes of the singular link list. 13 | 2. Delete nth element without using any counter from the link list ? Hint: use pointers and distance them according to number n 14 | 3. Find median of link list without using the counter ? 15 | 4. How to make stack with two queues. 16 | 5. Delete nth last element in strict O(n) ? 17 | 6. Delete the nth element without using the previous pointer? Ans: Copy the data from the next node to current node and delete the last node 18 | 7. Postfix Expression algorithm. 19 | 8. ZigZag Array problem 20 | 9. Reverse a linked list. 21 | 10. Divide a set into two subsets such that difference between the sum of numbers in two sets is minimal? 22 | 23 | ## OOAD: 24 | 1. Name different design patterns and explain them. 25 | 2. Implement polymorphism 26 | 3. Implement Singleton Pattern 27 | 4. Implement class diagram of Composite pattern 28 | 5. Implement MVC 29 | 6. Rest APIs 30 | 7. Polymorphism, Abstract class and he make changes to code having polymorphism and abstraction concept and ask me to find whether code will give error or not. 31 | 8. Abstraction vs Encapsulation 32 | 9. Ask basic major concepts of ooad. 33 | 10. What are the advantages of object-oriented over functional programming? 34 | 11. Database Schema design and queries on group by, order by, join and having clause. 35 | 36 | ## Analytical 37 | 1. A beast takes away your half of your food item and return you 1. How much do you require to have 2 items at end after meeting beast for 5 times. 38 | 2. Same beast take away half of the items now and return nothing. Give a generic formula to this ? For nth encounter 39 | 3. Top horse among 25 horses problem 40 | 4. 8 balls weight problem 41 | 5. Two people dropped on a plane. A doesn’t know where B is and B doesn’t know where A is. They can move left or right only. How can A find B? Hint: Move left 1 step then move right 2 steps then left 3 steps then right 4 steps until B who is standing still is found. 42 | -------------------------------------------------------------------------------- /resume-tutorials/how-to-tailor-make-cv.md: -------------------------------------------------------------------------------- 1 | # How to Tailor make a CV 2 | For many job seekers, it's not uncommon to find 20 or so positions you'd like to apply for when conducting an online job search. 3 | 4 | It may sound like a time consuming process, but making the effort to tailor your CV to suit the requirements of each particular job that you are applying for can greatly increase your chances of securing an interview. The following are the main areas of your CV that should be adapted to meet the exact requirements. 5 | 6 | ### Personal Statement 7 | You have read the requirements of the advertised position and understand what qualities the recruiter is looking for in a candidate. Sum up your unique selling points and, in a brief sentence, state your accomplishments and how these will help you succeed in the job you are applying for. 8 | 9 | ### Employment History 10 | If you are applying for a managerial position but have never previously worked as manager, emphasise that your previous roles involved considerable responsibility and decision-making duties such as delegation, chairing meetings, training staff, etc. 11 | 12 | If a separate role is more of a sideways step, you may want to focus more on innovative ways you have achieved success in the role to show your competency. Make it clear that whatever it is they want, you're able to fulfil their needs. 13 | 14 | ### Skills 15 | Presumably most of the roles you're after will have a similar set of skills, but that doesn't mean you should leave this section alone. Think how easy it would be for a recruiter to see that you're suitable if the skills you demonstrate are in the same order that have on their job description. 16 | 17 | ### Hobbies and Interests 18 | Most job advertisements stipulate certain personality traits required for positions, so identify what they are and see how your hobbies can relate to the requirements. 19 | 20 | If you are applying for a senior position, then the fact that you captained your football team and ran training sessions will demonstrate your leadership and organisational ability. If you are seeking a position as a designer, then make reference to the exhibitions that you attend or are actively involved in and the designers that you admire. 21 | 22 | If you want to position yourself as one of the strongest candidates for the job, it is worth doing your homework on the company that you are applying to. Their job advert will provide you with a glimpse of what the company is like, but you can find valuable information on their corporate website that will help you to understand what they may be looking for in a job applicant. Try and make the way your CV comes across match their company ethos. 23 | 24 | -------------------------------------------------------------------------------- /caramel-studios/interview-questions.md: -------------------------------------------------------------------------------- 1 | # Questions 2 | These questions were asked during Caramel Studios interviews. 3 | 4 | ## Java 5 | 1. Why does the prototype of a copy constructor contain an &? 6 | 2. Can you pass by value in Java? 7 | 3. Can you pass a primitive data type by reference in Java? 8 | 9 | ## Mathematical 10 | 1. A bin has 12 red balls, 10 blue balls, and 8 green balls. 11 | 2. How many balls do you need to pick so you're certain you have two of each color? 12 | 3. How many balls do you need to pick so you're certain you have two of any color? 13 | 14 | ## Generic Programming 15 | 1. Given a number, write a function to reverse it (so 12345 -> 54321) 16 | 2. Write a generic method to map 2d array indices to a linear memory offset. For example, given an array of dimensions 2x3 and index [1,1], return 4. 17 | 3. Write recursive function for power of a variable x^y 18 | 4. Can you call static variables from a non-static member function? What about the other way around? 19 | 5. Let’s say there’s a formula to get elements of a 1d array i.e. arr(i) = x + 2i . It means if you enter arr(1), it will return x + 2*1 = x+2 and give you `arr[1]` of an array. Now create a formula for doing this for 2D array. 20 | 6. Delete nth last node from linked list 21 | 7. Remove the middle node of singly linked list, you only have access to middle node, can’t access or use root node or end node. 22 | 8. Find all combinations in array whose sum equals given number. 23 | 9. Find Rotating substring in other String 24 | 10. Place zeroes to last indexes in array. 25 | 11. Find distance between 2 nodes of BST. 26 | 12. Permutation variables in array 27 | 13. write query to find out 3rd max salary 28 | 14. Write function to tell if string is Anagram string or not. 29 | 15. Given an integer array for example 17,5,8,30,5,25,18 and a number n. Find all those combinations of numbers from the array whose sum is equal to n? 30 | 16. Find the intersection of two singly linked lists in O(n) 31 | 17. find palindrome in singly linked list 32 | 18. Find all possible combinations of an array 33 | 19. Find if linked lists intersects or not. 34 | 20. Bst insertion, Bst inorder traversal 35 | 21. Reverse the singly link list 36 | 22. Mirror the Binary tree. 37 | 23. Tell if a number is even or odd without using any condition. 38 | 24. Given two sorted arrays, make another array and place all the elements of array 1 and 2 in sorted format. 39 | 25. MVC architecture. 40 | 26. Mirror the Binary tree. 41 | 27. Detect, remove loop in graph 42 | 28. Find max contiguous sum in array. 43 | 29. Fibonacci, palindrome, reverse an array 44 | 45 | ## SQA 46 | 1. What is smoke testing? Identify initial two smoke cases of a lift? 47 | 2. What are usecases and testcases? Give one example of a usecase and identify its testcases. 48 | 3. What are components of a test case? 49 | 4. What are bugs? What are errors? 50 | 5. Some bug scenarios were given to identify the bug severity and priority as high, medium or low. 51 | 52 | ## Analytical Questions 53 | 1. You are present in a basement that has three electric buttons for three bulbs present on ground floor.For all three electric buttons you have to identify which electric button is associated to which bulb by only going to the ground floor once. (Hint: Concept of Energy/Heat) -------------------------------------------------------------------------------- /techlogix/interview-questions.md: -------------------------------------------------------------------------------- 1 | # Questions 2 | These questions were asked during Techlogix interviews. 3 | 4 | ## Algorithmic analysis and basic programming logic 5 | 1. Write a function that takes a char string like “1234” or “-1234” and returns int 6 | 2. Given are three numbers x, y and z such that x = yz. Write a function to compute x. Find its time complexity. Can you optimize it? 7 | 3. Given a singly linked list, print values from nth to last element of the list. 8 | 4. Swap 2 integers a and b without using another variable 9 | 5. Given 2 arrays A and B, give all the pairs in A and B (e.g. A[i], B[j]) that give a sum of k. (Note: there is a solution with O(nlogn) and also with O(n) by using hashing) 10 | 6. Given a function that generates a random number between 20-50, write a function that generates a random number between 10-70. (scale approach) 11 | 7. Write a program to print the maximum numbers from an array of size n in windows of size x sliding across. For example, if [1 6 5 1 3 7 8] and x = 3, then output [6 6 5 7 8]. 12 | 8. Write a function to check if a string is palindrome or not. 13 | 14 | 15 | ## OOAD: 16 | 1. What is the difference between using Interfaces and inheriting Classes (in Java) 17 | 2. Why use OOAD opposed to sequential and functional. 18 | 3. List and describe some OOP design patterns. 19 | 20 | 21 | ## SQL 22 | 1. Write a query to find list the employee name, manager name and dept name (from very generic tables) 23 | 2. What is Normalization and why do we use it (follow up:Why remove redundancy?) 24 | 3. What are aggregate functions 25 | 26 | ## Analytical: 27 | 1. An airplane flies from Islamabad to Karachi in 90 mins but flies back from Karachi to Islamabad in 1 hour 30 minutes. Why? 28 | 2. There's a room with dimensions X * Y. You're given tiles of N*N. Maximize N such that the tiles completely cover the room. 29 | 3. The longest distance you can travel when you have 3 motor bike tires that wear out after 30 km ? 30 | 31 | ## Generic 32 | 1. Explain what is your FYP 33 | 2. Tell me about yourself 34 | 35 | 36 | ## Technical (Database, Implementation, Business analyst ) 37 | 1. What are the advantages of normal forms to customer and to engineer 38 | 2. Which one is faster, normalized or single table for data extraction 39 | 3. What is the difference between truncate drop and delete 40 | 4. Why is there need for views alongside table? 41 | 42 | ## Second in-office Interview: 43 | 1. What are you doing these days? 44 | 2. Talk about the projects you mentioned (for the above question) 45 | 3. Talk about your FYP. What are its applications? How do you judge its importance? 46 | 4. Which programming language do you prefer? Why? 47 | 5. Can foreign keys be null? 48 | 6. What is an index? Why do we use it? 49 | 7. How to deal with views if there is a change in original tables? 50 | 8. What is performance wise better join or a subquery? 51 | 9. In which case accessing data will be fast, a sorted array or a hashmap? 52 | 10. Without using any built-in functions, how would you tell if a number is a power of 2? 53 | 11. When do you use recursion over iteration? 54 | 12. Without using any built-in functions, how would you calculate square root of a number? 55 | 13. Do you watch any movies? If so, which kind? 56 | 14. What are your strengths? What are your weaknesses? 57 | 15. Name any design patterns. How have you used the ones you named in your projects? 58 | 16. Did you do any internship in the summers? 59 | -------------------------------------------------------------------------------- /technical-interview-checklist/data-structures-n-algorithms.md: -------------------------------------------------------------------------------- 1 | # Topics to study for DSA 2 | These topics to study for DSA. 3 | 4 | - Stack Functions 5 | - - Implement Stack using Queue 6 | - - Reeversing an array, string 7 | - - String manipulation 8 | - - Infix to Postfix Conversion using Stack 9 | - - Prefix to Infix Conversion 10 | - - Prefix to Postfix Conversion 11 | - - Postfix to Prefix Conversion 12 | - - Postfix to Infix 13 | - - Convert Infix To Prefix Notation 14 | - - Check for balanced parentheses in an expression 15 | - - Next Greater Element 16 | - - Next Greater Frequency Element 17 | - - The Celebrity Problem 18 | - - Expression Evaluation 19 | - - Arithmetic Expression Evalution 20 | - - Evaluation of Postfix Expression 21 | - - Iterative Tower of Hanoi 22 | - - next greater number of Q queries 23 | - - Reverse a stack using recursion 24 | - - Sort a stack using recursion 25 | - - Sort a stack using a temporary stack 26 | - - Reverse a stack without using extra space in O(n) 27 | - - Delete middle element of a stack 28 | - - Sorting array using Stacks 29 | - - Delete array elements which are smaller than next or become smaller 30 | - - Check if a queue can be sorted into another queue using a stack 31 | - - Reverse individual words 32 | - - Count subarrays where second highest lie before highest 33 | - - Check if an array is stack sortable 34 | 35 | 36 | - Queue Functions 37 | - - Implement Queeue using stack 38 | - - Breadth First Traversal or BFS for a Graph 39 | - - Level Order Tree Traversal 40 | - - Reverse a path in BST using queue 41 | - - Construct Complete Binary Tree from its Linked List Representation 42 | - - Check whether a given Binary Tree is Complete or not 43 | - - Number of siblings of a given Node in n-ary Tree 44 | - - ZigZag Tree Traversal 45 | - - FIFO (First-In-First-Out) approach in Programming 46 | - - FIFO vs LIFO approach in Programming 47 | - - LIFO (Last-In-First-Out) approach in Programming 48 | - - Reversing a Queue 49 | - - Reversing a queue using recursion 50 | - - Reversing the first K elements of a Queue 51 | - - Sorting a Queue without extra space 52 | 53 | - Linked List 54 | - - Middle of Linked List 55 | - - Find Linked List is circular or not 56 | - - Insert/Delete at nth node of Linked List 57 | - - Merge two Linked Lists 58 | - - Reverse a Linked List 59 | - - Remove all occurrences 60 | - - Linked List vs Array 61 | - - Linked List Insertion 62 | - - Linked List Deletion (Deleting a given key) 63 | - - Linked List Deletion (Deleting a key at given position) 64 | - - delete a Linked List 65 | - - Find Length of a Linked List (Iterative and Recursive) 66 | - - Search an element in a Linked List (Iterative and Recursive) 67 | - - Write a function to get Nth node in a Linked List 68 | - - Nth node from the end of a Linked List 69 | - - middle of a given linked list 70 | - - count the number of times a given int occurs in a Linked List 71 | - - Detect loop in a linked list 72 | - - Find length of loop in linked list 73 | - - check if a singly linked list is palindrome 74 | - - Remove duplicates from a sorted linked list 75 | - - Remove duplicates from an unsorted linked list 76 | - - Swap nodes in a linked list without swapping data 77 | - - Pairwise swap elements of a given linked list 78 | - - Move last element to front of a given Linked List 79 | - - Intersection of two Sorted Linked Lists 80 | - - Intersection point of two Linked Lists. 81 | - - QuickSort on Singly Linked List 82 | - - Segregate even and odd nodes in a Linked List 83 | - - Reverse a linked list 84 | 85 | - Binary Search Tree 86 | 87 | - Sorting Algorithms 88 | - - Selection Sort 89 | - - Bubble Sort 90 | - - Recursive Bubble Sort 91 | - - Insertion Sort 92 | - - Recursive Insertion Sort 93 | - - Merge Sort 94 | - - Iterative Merge Sort 95 | - - Quick Sort 96 | - - Iterative Quick Sort 97 | - - Heap Sort 98 | - - Counting Sort 99 | - - Bucket Sort 100 | - Complexities & Stability of Sorting Algorithms 101 | - Difference between List, Array & Vector 102 | - BFS & DFS 103 | - Check if a Graph is a Tree or not 104 | - Hashmap 105 | - Heap -------------------------------------------------------------------------------- /venture-drive/interview-questions.md: -------------------------------------------------------------------------------- 1 | # Questions 2 | These questions were asked during VentureDrive interviews. 3 | 4 | ## General: 5 | 1. Describe yourself 6 | 2. Describe your FYP 7 | 3. Why VentureDive? 8 | 4. How much did you prepare for this interview? 9 | 5. What do you prefer? C++, Java, Android? 10 | 11 | ## Programming: 12 | 1. Swap two integers without having a temporary variable ? 13 | 2. Find duplicates in an array without using HashMaps in O(N) ? 14 | 3. Different version of a function overriding, with either different return type or with different parameters. Does this qualify as function overriding as well ? 15 | 4. Difference between overriding a simple function and overriding a virtual function? 16 | 5. What will happen if I try to change Java bytecode through a Java program? 17 | 6. Difference between overloading and overriding 18 | 7. Draw a UML diagram of a project ( they gave me one of my university projects) 19 | 8. How to find if a linked-list has a cycle? 20 | 9. Write pseudocode to implement a stack. 21 | 10. Suppose a C++ class has a virtual function, can we create its object? 22 | 11. What are friend functions or classes? If class C is inheriting from class B and class A is a friend of class B, can class C also access class A? 23 | 12. What happens if data is increased in case of recursion? (Ans: space complexity issue i.e. stack overflow) 24 | 13. How the compiler gets to know which function to execute in case of overriding? (Hint: Vtable) 25 | 14. Why can't we instantiate objects of abstract classes? (Ans: no entry of virtual functions in Vtable) 26 | 15. Wrote 3 structs and asked about the size of each in memory. (Hint: space less than 1 word size cannot be allocated in memory) 27 | 16. Given a string of n length. Write code to generate all permutations of that string 28 | 17. Write recursive code to traverse bst in order. 29 | 18. How are AVL rotations performed? 30 | 31 | ## Android / Java: 32 | 1. Write the code for an activity. 33 | 2. What are memory leaks in Android? 34 | 3. How can we avoid memory leak? 35 | 4. How many threads are there in Android? 36 | 5. Why use Fragments instead of Activities? 37 | 6. What if a fragment gets destroyed? 38 | 7. How are threads created? 39 | 8. Is it guaranteed that a thread will start considering I write the code and run it? Suppose I have 10K threads and I start another. Is it guaranteed to start? 40 | 9. I have two threads arriving at the same time, how do I select one that should always run first? 41 | 10. Why do we use threads? 42 | 11. What can go wrong if I have a network call in a thread that updates the UI after receiving the data? What can I do to solve this? 43 | 12. What is Hibernate? 44 | 45 | ## OOAD: 46 | 1. Implement polymorphism without having interhitence? 47 | 2. Diff b/w Polymorphism and Inheritance? 48 | 3. Diff b/w Data Encapsulation and Data Abstraction? 49 | 4. How can we do Data Encapsulation? 50 | 5. How can we do Data Abstraction? 51 | 6. Does it is necessary that a class having Abstraction will have encapsulation ? 52 | 7. What is Factory pattern? 53 | 8. What is State pattern? 54 | 9. What is coupling and cohesion? 55 | 10. Which is better, coupling or cohesion? Why? 56 | 11. Why do we use Design Patterns? What are the benefits? 57 | 58 | ## Database: 59 | 1. What is Indexing? If the table has only primary keys does it need to store index or cluster index ? 60 | 2. Draw the schema for an Airline Management System (Selected from the course projects) 61 | 3. Using the drawn schema. Write a query to view the information of passengers that have bought the ticket for a flight that is going from JFK to ISB but has been cancelled and the passenger has not boarded yet. Also the airplane should be Airbus. 62 | 4. Write a query to get the student with second highest marks in a table. 63 | 5. What are transactions? 64 | 65 | ## Analytical: 66 | 1. You have two ropes. They burn in 30 minutes each. I want to know when 45 minutes pass. 67 | 2. You have 8 balls. 7 of them are 8g each. One ball is 10g. You have a manual balance (scale). How would you efficiently find the heavier ball? 68 | 3. There is an elephant that needs to go 1000 km across, it can only carry 1000 items at one time. You have total 3000 Items how much will you be able to transport if elephant consumes 1 item on 1 km. 69 | -------------------------------------------------------------------------------- /xavor/interview-questions.md: -------------------------------------------------------------------------------- 1 | # Questions 2 | These questions were asked during Xavor interviews. 3 | 4 | ## HR: 5 | 1. Salary? 6 | 2. Are you currently interviewing for any other jobs 7 | 3. Have you ever been a lead in a team? 8 | 4. Strengths and weaknesses? 9 | 5. How are you overcoming your weaknesses? 10 | 6. Any idea what Xavor does? 11 | 7. Interests? 12 | 8. Ideal organization? 13 | 9. Did you know about Xavor before the recruitment drive? 14 | 10. Freelancing experience? 15 | 11. Is the expected salary negotiable? 16 | 12. What would you bring to Xavor? 17 | 13. What are your future goals? 18 | 14. If you want to spend 100,000 pkr in charity, where will you spend? 19 | 15. What is dean’s list? 20 | 21 | ## Technical: 22 | 1. Describe yourself (First question of the Technical interview) 23 | 2. FYP 24 | 3. Other than FYP, which project gave you the most satisfaction? 25 | 4. Any other projects 26 | 5. How do you deal with a problem that you just can’t solve 27 | 6. How would you deal with a teammate who isn’t completing their work on time? 28 | 7. What is Interoperability in Asp.net? 29 | 30 | ## Analytical / Programming: 31 | 1. A building has 100 floors. You have 2 similar mobiles. How would you find the maximum floor from which dropping the phone would not break it? (Optimize time and you can waste both phones) 32 | 2. You have two ropes. They each take one hour to burn. How would you know when 45 minutes have passed? They don’t burn sequentially, i.e., you can’t keep track of how much of the rope has burnt (10%, 25%,...) 33 | 3. Write a program to find the first non-repeating letter in a string. For example, “abbcdaa” then “c” is he first non-repeating letter. Can you go better than O(n2)? You cannot use additional data structures (including an array, which until the interviewer pointed out, I had totally forgotten is also a data structure). The only string functions you can use are indexing (s[i]) and s.length( ) 34 | 4. You have a balance and eight balls which are of same size and have exactly same appearance. 1 out of eight balls has more weight than rest of the seven individual balls. You have to find the ball which weighs more by using balance as minimum times as possible. 35 | 36 | ## SQL / DB: 37 | 1. A query is taking a very long time to execute, how will you debug and what might be the problems. 38 | 2. What are Database Indexes? Clustered Index, etc 39 | 3. What are Stored Procedures? 40 | 4. What are User Defined Functions? 41 | 5. Why do we use Having? 42 | 6. What are the different types of JOINS? 43 | 7. Write a query to get the count of a value that is repeated the maximum times 44 | 8. What are composite keys? 45 | 9. Difference b/w primary key, composite keys and unique attributes 46 | 10. What is indexing? 47 | 11. Which of noSQL and relational database is faster? 48 | 12. Write a query to calculate cgpa of a student. 49 | 13. Write a query to get the 10th highest salary. 50 | 51 | ## Java: 52 | 1. Interface vs Abstract Classes 53 | 2. What is static class 54 | 3. Why use interface, why not just abstract classes 55 | 4. A universal remote is used to turn devices (AC, TV, etc) on and off. How will you describe this functionality in code? Does a design pattern apply? 56 | 5. Given a directory tree, code a function get all the files in that File System. What will the code be if BFS is used? What if DFS is used? 57 | 6. What is a static class? 58 | 7. Is it necessary for a static class to have static data members and static functions? 59 | 8. What if I write a public static abstract class? 60 | 9. If children do not overwrite the functions of the parent class (abstract), do functions occupy the same memory locations for multiple children? 61 | 10. What is meant by function overriding ? Why do we do it? 62 | 63 | ## Software engineering: 64 | 1. Familiar with github? 65 | 2. Github commands 66 | 3. What is a sprint 67 | 4. What is continuous integration 68 | 69 | ## OOAD: 70 | 1. What is Polymorphism? 71 | 2. What advantage is there to using polymorphism? 72 | 3. What is Singleton? 73 | 4. What is Data Encapsulation? Give a real world example 74 | 5. Why use classes instead of modular programming? 75 | 6. Can you do polymorphism in a single class? 76 | 7. Describe polymorphism in terms of objects in the interview room. 77 | 8. What Architecture design is high in Cohesion. (Answer: Service oriented Architecture) 78 | 79 | ## Python: 80 | 1. Is python an object oriented programming language? 81 | 82 | ## General: 83 | 1. What is life? (not kidding) 84 | 2. Give a logical proof that if two consecutive numbers have a difference of two (eg 17 and 19), the number in the middle (eg 18) is a multiple of 6. -------------------------------------------------------------------------------- /Miscalleneous/interview-questions.md: -------------------------------------------------------------------------------- 1 | # Questions 2 | These questions were asked during various interviews and are remained anonymous due to copyright issues: 3 | 4 | ## SQL 5 | 1. What are Constraints in SQL? 6 | 2. What is a Primary Key? 7 | 3. What is a UNIQUE constraint? 8 | 4. What is a Foreign Key? 9 | 5. What is a Join? List its different types. 10 | 6. What is a Self-Join? 11 | 7. What is a Cross-Join? 12 | 8. What is an Index? Explain its different types. 13 | 9. What is the difference between Clustered and Non-clustered index? 14 | 10. What is Data Integrity? 15 | 11. What are UNION, MINUS and INTERSECT commands? 16 | 12. What are Entities and Relationships? 17 | 13. List the different types of relationships in SQL. 18 | 14. What is Normalization and its benefits? 19 | 15. What is Denormalization and its benefits? 20 | 16. What are the TRUNCATE, DELETE and DROP statements? 21 | 17. Why do we use JOIN on the table? (The correct answer is "for Denormalization purposes") 22 | 18. What is OLTP? 23 | 19. What is a Stored Procedure? 24 | 25 | ## Programming 26 | > Note: All programming questions are normally asked randomly. However, here is a comprehensive list of MUST-KNOW programming questions. 27 | 28 | ### Arrays and Lists 29 | 1. Index of maximum element in array. 30 | 2. Indexes of maximum and minimum elements simultaneously. 31 | 3. Find longest string in array of strings. 32 | 4. Find shortest string in array of strings. 33 | 5. Array reverse. 34 | 6. Intersection of two arrays. 35 | 7. Union of two arrays (with remove duplicates). 36 | 8. Union of two arrays (with remove duplicates) for some key. 37 | 9. Find duplicates. 38 | 10. Array with N unique/not unique random objects. 39 | 11. Check if array is sorted. 40 | 12. Array shuffle (Fisher-Yates). 41 | 13. Sum of array elements. 42 | 14. N of occurences of each element in array. 43 | 44 | ### Search Algorithms 45 | 1. Linear search. 46 | 2. Binary search. 47 | 48 | ### Sorting Algorithms 49 | 1. Bubble sort. 50 | 2. Shell sort. 51 | 3. Merge sort. 52 | 4. Quick sort. 53 | 5. Insertion sort. 54 | 6. Selection sort. 55 | 7. Radix Sort. 56 | 8. Partial selection sort. 57 | 9. Heap sort. 58 | 59 | ### Selection Algorithms 60 | 1. Quickselect. 61 | 62 | ### Strings 63 | 1. Palindrome or not. 64 | 2. String reverse. 65 | 3. Words count. 66 | 4. Permutations of string. 67 | 5. Occurrences of each character (a - z). 68 | 6. Count "needles" in a "haystack". 69 | 7. Random string. 70 | 8. Concatenation of two strings. 71 | 9. Find 1st occurrence of "needle" in a "haystack". 72 | 10. Last occurrence of "needle" in a "haystack". 73 | 11. Longest common subsequence. 74 | 12. Levenshtein distance. 75 | 13. KMP (Knuth–Morris–Pratt). 76 | 14. Boyer–Moore string search algorithm. 77 | 78 | ### Numeric Algorithms 79 | 1. Sieve of Eratosthenes. 80 | 2. Great common divisor (GCD). 81 | 3. Least common multiple (LCM). 82 | 4. Factorial. 83 | 5. Fibonacci numbers (5 algos). 84 | 6. Sum of digits. 85 | 7. Binary to decimal conversion. 86 | 8. Decimal to binary conversion. 87 | 9. Fast exponentiation. 88 | 10. Number reverse. 89 | 11. Even/odd check. 90 | 12. Leap year check. 91 | 13. Armstrong number check. 92 | 14. Prime number check. 93 | 15. Find Nth prime. 94 | 16. Swap the value of two NSInteger pointers. 95 | 17. Square root using Newton-Raphson method. 96 | 18. Convert integer to another numeral system (2, 8, 12, 16). 97 | 19. Fast inverse square root. 98 | 99 | ### Data Structures 100 | 1. Stack (LIFO). 101 | 2. Queue (FIFO). 102 | 3. Deque. 103 | 4. Linked list. 104 | 5. Graph: 105 | - DFS (depth-first search); 106 | - BFS (breadth-first search); 107 | - MST (minimum spanning tree - Prim's algorithm); 108 | - MST (minimum spanning tree - Kruskal's algorithm); 109 | - Shortest path (Dijkstra's algorithm); 110 | - Topsort. 111 | 6. Tree. 112 | 7. Binary tree: 113 | - Pre-order traversal; 114 | - In-order traversal; 115 | - Post-order traversal. 116 | 8. Binary search tree (BST). 117 | 9. Reverse a Binary tree 118 | 10. AVL tree. 119 | 11. Binary heap. 120 | 121 | ### Problems 122 | 1. Josephus Problem. 123 | 2. Modulo bias. 124 | 125 | ### Geometry 126 | 1. Array of sorted locations according to a distance to a given location. 127 | 2. Cartesian quadrant selection algorithms 128 | 129 | ### Recursion 130 | 1. Tower of Hanoi. 131 | 132 | ## Design Pattern 133 | You can use this guide to prepare topics for [Design Patterns](http://www.tutorialspoint.com/design_pattern/design_pattern_interview_questions.htm) 134 | 135 | ## Computer Networking 136 | You can use this guide to prepare topics for [Computer Networking](https://www.interviewbit.com/networking-interview-questions/) 137 | -------------------------------------------------------------------------------- /i2c/interview-questions.md: -------------------------------------------------------------------------------- 1 | # Questions 2 | These questions were asked during i2c interviews. 3 | 4 | ## General 5 | 1. Would you be comfortable working at night? 6 | 7 | ## HR Questions: 8 | 1. Your 3 weaknesses and strengths? 9 | 2. Expected Salary? 10 | 3. Are you OK with what we do. 11 | 4. What are your hobbies and stuff 12 | 5. Tell us something about yourself 13 | 6. Introduce yourself. Tell us about your educational and professional background (if any). 14 | 7. What is the perception of i2c among fastians. 15 | 8. What differentiates you from other candidates? 16 | 9. Biggest accomplishment? 17 | 10. Role in FYP? 18 | 11. Difference between smart work and hard work (what do you prefer? explain?) 19 | 12. Any kind of negative remarks about this company? 20 | 13. What makes you frustrated? 21 | 14. Did you participate in any co-curricular activity? 22 | 15. What are your passions? 23 | 16. You might get other job offers, so what would be the reasons to choose i2c over other companies? 24 | 17. Do you have any questions to ask from us? 25 | 18. Why is your CGPA low? (incase you have a low CGPA) 26 | 19. Do you have any plans for further studies? 27 | 20. You might also be asked something related to the essay you wrote in the HR assessment. 28 | 29 | ## Technical: 30 | 1. (Just basic CONCEPT of the following, not much detail.) 31 | 2. Basic intro of your FYP 32 | 3. What was your part in fyp 33 | 4. Basic intro of any other projects you have done 34 | 5. Tell some git commands 35 | 6. What is difference b/w encryption and compression 36 | 7. Tell some encryption algos 37 | 8. How would you encrypt any given string? 38 | 9. What is backlog 39 | 10. How long is a Sprint 40 | 11. DETAILED explanation of FYP 41 | 12. Applications of FYP 42 | 13. Name some non-functional requirements of your FYP (+ name some general non-functional requirements). 43 | 14. Why do we use ftp protocol 44 | 15. What is serialization and deserialization? 45 | 16. Regex and How to use regex on a particular initial? 46 | 17. Write recursive factorial function? 47 | 18. Difference between array and vectors? 48 | 19. What are collections? 49 | 20. What is static and final? 50 | 21. What is garbage collection? How would you implement it? 51 | 22. What is CNN? 52 | 23. How would you make an artificially intelligent machine? 53 | 24. What are access specifiers? 54 | 25. Which protocol should be used while making a chat system ? 55 | 26. How can you create a heap overflow ? 56 | 57 | ## Database 58 | 1. Normal Forms. 59 | 2. Anomalies 60 | 3. DDL, DML 61 | 4. Views,Triggers 62 | 5. Write a query to delete a table 63 | 6. How will you create a table with images? 64 | 7. When do we use varchar 65 | 8. What is noSQL 66 | 9. What are transactions 67 | 10. What is rollback 68 | 11. How would you implement a rollback function if you are creating a DBMS? 69 | 12. What is SQL injection? 70 | 13. Truncate vs Delete vs DROP 71 | 14. Write a query to select average salary department wise 72 | 15. Delete a row 73 | 16. How are views helpful/Advantage of views in business layer? 74 | 17. Why is TRUNCATE a DDL? 75 | 18. How to use a BLOB? 76 | 19. What is ACID? 77 | 20. What is projection? 78 | 21. How to delete a column from a table? 79 | ``` 80 | SUBJECT 81 | subject_id subject_name 82 | 83 | STUDENT 84 | student_id student_name subject_id student_marks 85 | 86 | RESULTANT TABLE 87 | student_name student_marks subject_name 88 | 89 | Write a query to display only the students with the highest marks for each course in the resultant table 90 | ``` 91 | 92 | ## O.S: 93 | 1. Type of File Systems (just names) 94 | 2. components of List operating systems 95 | 3. List data structures used in OS. 96 | 4. Where is a heap used in OS. 97 | 5. How does a file system run/work 98 | 6. What are some commands of assembly language? 99 | 7. What is fragmentation? 100 | 8. List some terminal commands 101 | 102 | ## COMPUTER NETWORKS: 103 | 1. What are ports? 104 | 2. List network protocol 105 | 3. Which protocol would you use if you wanted to create Twitter? (ans: HTTP, not TCP) 106 | 4. How to prevent a DDos attack ? 107 | 108 | ## COMPUTER ARCHITECTURE: 109 | 1. Fragmentation. 110 | 2. Virtual Memory 111 | 3. What data structure would you use to implement Main Memory? 112 | 4. Caches are different from Main Memory, so what data structure would you use to implement a cache? 113 | 114 | ## OOP: 115 | 1. Static Variable 116 | 2. Singleton Class 117 | 3. What is open/closed principle 118 | 4. What is cohesion 119 | 5. What is single responsibility principle 120 | 6. Composition vs inheritance 121 | 7. What is coupling? 122 | 8. How can you increase coupling? How would you increase coupling in a SINGLE class? 123 | 9. Is coupling high in composition? 124 | 10. How can you reduce coupling? 125 | 11. What are immutable strings in Java. 126 | 127 | ## Data Structures: 128 | 1. Basic definition of stack and queue. 129 | 2. Name some searching algorithms. 130 | 3. Explain a code to delete second last element of a linked list 131 | 4. What is the difference between a set and a list/array? 132 | 133 | ## Java: 134 | 1. What is the role of jdbc/odbc? 135 | 2. What is the difference between immutable and mutable strings? (Strings are always immutable!) 136 | 3. How can you make a String mutable? 137 | 4. Null pointer exception 138 | 5. What are packages in Java? 139 | 6. What is final in java why we make a final method ? 140 | 141 | ## Software Testing: 142 | 1. Describe the types of ST 143 | 2. What is unit testing 144 | 3. What is assert statements (in junit) 145 | 4. How did you perform white box and black box testing (if you have done it) 146 | 147 | ## Assembly: 148 | 1. What does shift left operation do mathematically? (Ans: multiplication by 2) 149 | 150 | ## Software Engineering: 151 | 1. What is SOLID Principle? 152 | -------------------------------------------------------------------------------- /resume-tutorials/complete-cv-guide.md: -------------------------------------------------------------------------------- 1 | # How to write a CV 2 | 3 | Recruitment software now scans your CV for key words and skills used in the job advertisement. This software is used by recruitment agents and many employers. This means that you should change your CV for each job application, using key words from the job advertisement. 4 | 5 | ## Template: 6 | Although it is a meme but this is a perfect template for [resume](CV_Template.jpg) 7 | 8 | ## CV Builder 9 | I would highly recommend [FlowCV](flowcv.io) 10 | 11 | ## Two types of CV 12 | There are two main types of CV: 13 | - Skills-focused CV – useful for career changers, school leavers or people with gaps in work history. 14 | - Work-focused CV – useful for showcasing work experience and for people progressing to the next stage in their career. 15 | 16 | ## Make your CV easy to read 17 | Recruiters take 15-20 seconds to scan your CV the first time. If you make a good impression, they'll read your CV more closely. 18 | To make your CV look good: 19 | - use a black, easy-to-read font in one size 20 | - use short sentences and break up blocks of text 21 | - use bullet points to list information 22 | - keep the tone formal 23 | - avoid abbreviations, slang or jargon 24 | - avoid photos or images 25 | - have strong headings and lots of white space 26 | - keep your CV to one page. 27 | - Save your CV as a PDF. PDF are viewable in browsers everywhere. 28 | - Label your CV files with the format: {FirstName_LastName_Resume.pdf} and your email Subject line: {Your name and the job you're applying for} 29 | 30 | ## What to put in your CV 31 | A CV must include: 32 | - your name and contact details 33 | - technical and personal skills 34 | - work, and community and volunteer experience 35 | - qualifications and education 36 | - referrals (you can include referees or note that referees are available on request). 37 | 38 | A CV could also include: 39 | - an objective and personal statement 40 | - achievements 41 | - interests 42 | - job-specific information (for example, a teacher would put their teaching philosophy in their CV). 43 | 44 | ## What not to put in your CV 45 | Don't put: 46 | - a photo or images 47 | - coloured or fancy fonts or design 48 | - your date of birth or age 49 | - your marital status, religion or bank account details 50 | - too much text and bad spelling 51 | - a funny or rude email address 52 | - work experience or interests that are not relevant to the job 53 | - lies about your experience and skills. 54 | 55 | ## Name and contact details 56 | Include: 57 | - first and last name (this should be in large and bold text) 58 | - Your city 59 | - phone number 60 | - email address. 61 | 62 | Optional: 63 | - job hunting profile link, such as LinkedIn or Behance 64 | - your professional website or Youtube channel link. 65 | 66 | Make sure that: 67 | - your email address is work-appropriate, for example, syedansab500@gmail.com 68 | 69 | ## Objective and personal statement 70 | An objective gives brief details about the type of work and role you would like and the industry you want to work in. A personal statement gives the employer an idea of who you are in three or four sentences. 71 | 72 | You can include: 73 | - what you're currently doing for employment or education 74 | - what attracted you to the job you're applying for 75 | - your reason you're applying for this job 76 | - your career goals. 77 | 78 | ## Skills 79 | The skills you put in your CV should be the same skills listed in the job advertisement. 80 | 81 | ### Technical skills 82 | Include a technical skill section in your CV to list skills such as: 83 | - Frameworks 84 | - Programming languages 85 | - Other skills like UI/UX and/or leadership. 86 | 87 | ### Examples of writing about personal skills in your CV 88 | In a skills-focused CV, list the skills from the job advertisement with examples of how you've used those skills. This should be at the top of your CV. 89 | - Strong communication skills 90 | - - President of X Society 91 | - - Managed an event catering 2000 students. 92 | 93 | - In a work-focused CV, describe your skills separately. 94 | 95 | ## Work history and work or volunteer experience 96 | List your most recent jobs or work and volunteer experience first. Your work history needs to include: 97 | - the name of the employer 98 | - the job title/role 99 | - where the job was located 100 | - start date and end date. 101 | - Beneath this, list the tasks you performed. Also list any achievements. 102 | - If you change jobs in the same organisation, include both job titles/roles. You don't need to list all your work history – keep your CV short. 103 | 104 | Note: Only add work history that you can endorse. After hiring, many companies require you to provide job leaving certificates from your past employers. 105 | 106 | ## Format of qualifications section 107 | List the newest or most relevant qualification first. Include: 108 | - name of the course or qualification you completed 109 | - name of the course provider 110 | - where you studied 111 | - start and finish date of your training or study, or the year you graduated. 112 | 113 | ## Achievements 114 | Include an achievements section in your CV if you have important achievements that aren't covered in the skills or work history sections. You can include such things as: 115 | - awards and commendations 116 | - successfully completed projects 117 | - examples of how you helped a former employer meet their targets 118 | - important contributions to the community. 119 | - For each example, note what the achievement was, and when and where you achieved it. 120 | 121 | ## Interests 122 | Including your interests on your CV is optional. If you do, make sure you: 123 | - include interests that show skills that employers are looking for such as leadership skills 124 | - avoid common interests such as watching TV or going out with friends. 125 | 126 | 127 | 128 | -------------------------------------------------------------------------------- /General-interview-questions/interview-questions.md: -------------------------------------------------------------------------------- 1 | # Questions 2 | These are general purpose questions that are asked in almost every interview. Most of the questions are subjected to understand your attitude, confidence and professionalism. Below them are the ways to answer them. 3 | 4 | ## 1. Tell us about yourself 5 | Well, I am Ansab and I graduated from PUCIT last year as a Computer Scientist. I recently joined Arbisoft as a Software Engineer, right after my graduation. Before that, I had 2 years of business development and engineering experience in various freelancing and startup ventures. I did my FYP in DHT-based blockchain systems which focused on improving space complexity for blockchains. It involved various domains of knowledge such as blockchain protocols, DHT protocols, web servers, networking and front-end development. 6 | 7 | ## 2. Why we should hire you? 8 | I am hardworking and passionate about engineering. Even though I have a limited knowledge domain, I always try to find unique and long lasting problem-solving solution.I always aspire to perfect the perfections and produce a new insight on relevant problems. That reflects on my contributions in the open-source community. (Expect follow up questions on this. They will ask you examples on how you came to this conclusion about yourself.) During my internship, we had many engineering problems to be addressed and we didn't have senior resources to help us archittect. So, me and my peers stepped up to take on these problems and brute-forced our way to the solution, even though it had many gaps for improvements. 9 | 10 | ## 3. Why this company? 11 | (This is the money-shot here. This is where you ensure you'll provide your worth to a company. Do research about them.) I've been in various engineering roles and have filled many hats as an employee. I saw on your website that you have built X product. I think it's an incredible idea and I think if I got the opportunity to work in this particular product, I could add value in it's Y domain. (Give an example). 12 | (The point of answering these questions does not necessarily mean you'll get the chance to work in that domain, it reflects your ideation and passion for a particular product.) 13 | 14 | ## 4. Tell us about your projects? 15 | (Primarily, add your FYP project heree, whether it's complete or not.) Like I said, we developed DHT-based blockchain systems as our FYP. The primary target was to introduce a DNS lookup system that operates on P2P communications. (Give the background on what was already done and what was the unique thing you added in your project. And how it turned out to be.) 16 | 17 | (In case you are asked about semester project, answer in following way) I have developed a job portal as a semester project during web engineering. We were given a list of poteential problems to be addressed before our final submissions and all of were required to solve that problem in a 6 week time. I chose the topic on Talent scouting and developed a job portal that allows employers to reach out to university students for internships through problem solving. I used templates from bootstrap themes for frontend and problem generation technique from advent of code and offered students to solve the coding problems on their own before applying to a particular job on my portal. 18 | 19 | ## 5. Tell us about your FYP? 20 | Same answer as above 21 | 22 | ## 6. Why did you choose that technology? 23 | (The key to this question is the research and comparison to other languages/framework. Don't ever use the phrases like "I was comfortable in this".) So, I chose to do my projects in Flask and React. I always loved solving problems in Python and I think I can very easily engineer solution to certain problems in this language. Moreover, there are so many libraries and pre-built frameworks that help you solve complex problems in just a few lines, which in return allowed me to solve the more problems in less time. 24 | 25 | ## 7. Define your role in your FYP? 26 | Overall, it was a collective approach for our FYP since it required us to bounce ideas off each other, so we all had to be there. We collectively took the responsibility on leaderships time to time as well. As for our development phase, I ook on the responsibility of development of our networking servers which connected with an interface as well as other servers inside our P2P system. 27 | 28 | ## 8. What are your Salary Expectations 29 | (This depends on what you want to say. Most of the recruiters already know what a software house is offering and you may mention if you have an offer from a particular software house without mentioning the value. I, personally, took another route and put the ball in their court and negotiate on what they had to offer. However, its important that you know the ballpark most software houses are offering so you don't undersell yourself.) I am in dawn of my career and right now I want to focus on establishing my knowledge and expertise in the field without, of course, comprising much monetarily. I have offers from X and Y software houses and I am keeping my options open. I want to know what you can offer and I will see where I can geet more value for my career. 30 | 31 | ## 9. What is your interest in Software Engineering: Frontend or Backend? 32 | (This depends on your taste. I personally like solving engineering problems and work on UI/UX side-by-side, so I naurally have an inclination for frontend.) 33 | 34 | ## 10. Your biggest achievement 35 | (Try to be humble about. Don't over or undersell yourself.) My biggest achievement is the realization that I can deliver when I am required to. I have, despite my habit of procastination, been asked for help in domains I don't have any expertise in. It felt great when I delivered. 36 | 37 | ## 11. Your strengths 38 | I can vision an idea and build a business use case out of it with a plan to execute it. I can take leadership for projects and deliver it to their end. Even though many of my ideas sound ridiculous at first, but with the right execution, they always turn out to be ground breaking. 39 | 40 | ## 12. Your weaknesses 41 | (Be honest about it. State the thing that sounds good on paper but is not) I would say I am a perfectionist. I take my job, not as a profession but as an art. For example, I don't like to push a code in production if I know it has bugs. As a result, sometimes I overpromise and underdeliver. 42 | 43 | ## 13. Your future plans 44 | (This is trick question. You are expected to align with company's ideals and are expected not to turn out a job hopper. My advice: Be diplomatic here.) 45 | 46 | ## 14. Your ideal organization / tech firm 47 | (Be honest, again. I personally defined an organization that is both fun and competitive.) 48 | 49 | ## 15. Tell us your CGPA in your degree? Why did you score less? (Just in case) 50 | My CGPA was X.XX, which is low by my standards. I personally didn't like sitting in the class and taking lectures. Not to disrespect, I personally think that a 1:30 lecture can be delivered in 15 minutes and the students should be engaged in elsewise activities to grab knowledge of that subject or topic. Naturally, I missed most of the sessionals and engaged myself in other activites and compensated in other curricular and co-curricular activities as visible on my resume. 51 | 52 | ## 16. Tell us about your hobbies? 53 | I like to listen to podcast and play static games. Most of the time, I put on puzzling games, such as Assassin's Creed that does not require much of my focus and listen to podcasts. (I was once asked which podcast I listen to. My reply was "I listen to podcast on applications or products that I want to build. I personally have this problem that I can't bounce off my ideas with a lot of people. This hobby helps me compensate on this problem.") 54 | 55 | ## 17. What do you do when you're free? 56 | Same answer as above. -------------------------------------------------------------------------------- /Miscalleneous/typical-backend-questions.md: -------------------------------------------------------------------------------- 1 | This guide was extracted from a prominent software house HR guidebook for freshgrad hiring. 2 | 3 | # Table of Contents 4 | 5 | 1. [General Questions/Ice Breaker](#general) 6 | 1. [Management Questions](#management) 7 | 1. [Algos, Data Structures, & Computer Science Fundamentals Questions](#algorithms) 8 | 1. [Design Questions](#design) 9 | 1. [Backend Linux Questions](#linux) 10 | 11 | ## General/Ice Breaker 12 | 13 | >You're looking for passion and enthusiasm when a candidate discusses their previous projects and any projects they're working on in their spare time. If they get excited talking about these things, they show the kind of passion for software development that is a good indicator of whether they're capable of meeting the your bar. 14 | Once you've calmed a nervous candidate's nerves or determined level of passion/enthusiasm, move on to the next set of questions. Try to spend a maximum of 5 minutes on this section. 15 | 16 | * Tell us about your most recent project. 17 | * Do you ever do any coding in your personal time (outside of work)? 18 | * Do you have a account on Github? 19 | * If so, what are some examples of repos you follow? 20 | * Tell us what critical problems you have to handle in your latest projects? 21 | * Why did you get into development? 22 | * How many technical books did you read in the past year? 23 | * What was your favorite technical book in the past year? What did you learn from it? 24 | * What websites do you read regularly, related to development? 25 | * Do you maintain any open-source projects? 26 | * Do you code in your spare-time? 27 | * Do you love programming, or do you do it for the money? 28 | * Have you accomplished anything important in your career yet? Do you want to? 29 | * What would make you feel that you have done something important? 30 | * What's your favorite programming language? Why? 31 | * If you could add one feature to your favorite language, what would it be? Why? 32 | * If you could remove one feature from it, what would it be? Why? 33 | * Suppose you could design your dream job that you'll be starting on Monday. It's at your ideal company with your ideal job title and salary. All you have to do is tell them what you want to do at your job and you can have it. What does your job entail? (Thanks! [nczonline](https://www.nczonline.net/blog/2015/09/my-favorite-interview-question/)) 34 | 35 | ## Management 36 | 37 | * How to tackle a story/task which is difficult to estimate and with high risk? 38 | 39 | > 40 | - Investigate as early as possible 41 | - Assign senior staffs on the problem 42 | - More frequent update and more communication 43 | - Report higher level supervisors to be aware of the situation 44 | 45 | * How to react to unexpected/frequent requirement changes, considering PoC phase and production phase. 46 | 47 | > 48 | - For PoC: 49 | - communicate with team members to let them know things are changing. 50 | - Proving the solution is more important than perfect design/implementation. For requirement changes, argue for the reason. If it is business reason, mostly we should follow. If it is technical reason, we should discuss first and then make decision. 51 | - For production: 52 | - Setup a process first. A requirement change should result in following reactions after replan (re-estimation): 53 | - If it is not so urgent, keep working, change the future plan 54 | - If it is urgent, either request resource (considering the 55 | ramp-up cost) or cut features 56 | - If not possible, suggest delay the release date 57 | 58 | * How to keep a team stable with limited offer. (How's about if you can't increase the compensation while the competitors can give more) 59 | 60 | >Basically, setup a good working environment all the time, making team members work happily, and with good development direction and opportunity. If things really happens, resort to higher-level manager and HR to find out a solution. 61 | 62 | ## Algos, Data Structures, & Computer Science Fundamentals 63 | 64 | > Algorithms are at the heart of every nontrivial computer application, and algorithmics is a modern and active area of computer science. Every computer scientist and every professional programmer should know about the basic algorithmic toolbox: structures that allow efficient organization and retrieval of data, frequently used algorithms, and basic techniques for modeling, understanding and solving algorithmic problems and our expectation of 65 | event candidates is that they are very strong in this area. 66 | 67 | * Implement linux command of tail, and print the last n lines. 68 | * Sorting 5GB file, considering memory problem, also using your favorite language writing the Merge sort algo. 69 | * Implement the algorithm judging whether two rectangle has crossed, and compute the crossed area. 70 | * Input one integer from command line, then split it into sum of multiple integers, and also print all possible sequences, once every line. For example, as for 3: the result is 71 | 72 | ~~~C++ 73 | 1 + 1 + 1 74 | 2 + 1 75 | 3 76 | ~~~ 77 | 78 | * String Matching Algo problem, figuring out whether there is a right bracket matching the left bracket. It should satisfies space complexity of O(n), but O(1) is better. 79 | * Input one english sentence that is separated by space., and reverse the sequence for the words of sentence, but the character sequence is not changed. For example, "I am a student." -> "student. a am I". 80 | * Input one array with size of N that has different positive integers. As for every element A[i], and we need to get the value which is located between 0 and i-1 and bigger than A[i], also nearest to A[i]. If this element is not found, and just return -1. For example, input: N=4, A[0..3]={7, 5 ,9, 6} output: {-1, -1, 5, 5}, and we need it to be O(n). 81 | * Find a number in a rotated sorted array. 82 | * Find the length of the loop in a linked list. 83 | * Implement an algorithm to print all valid (e.g., properly opened and closed) combinations of n-pairs of parentheses. 84 | * Find the longest common sequence between two strings. 85 | * Topological sort. 86 | * Find a number in a matrix in which each row and column is sorted. 87 | * Use rand5 to implement rand7. 88 | * Explain how a program is loaded into the memory, and how Virtual Memory is layout? where do dynamic libraries and mmap files locates in virtual memory space? 89 | * What is the difference between a process and a thread? 90 | * What is a critical section? 91 | * What is a race condition? 92 | * Define how many milliseconds in one year using `define`. 93 | * Define `max` function using `define`. 94 | * Why we always need to wrap up muliple statment block with `do{while(0);}` when using `define`? 95 | * Describe the role of `static`, `const`, `volatile`, `typeof`. 96 | * Implement a `trim_string` function for removing the whitespace from the beginning and end of a string. 97 | * Implement a Class which can't be inherited by other Classes with `C++`. 98 | * List the methods for IPC with brief explanations. 99 | * Write a function or macro: `LENGTH_OF` in order to get the length of array. 100 | 101 | ~~~C++ 102 | int array1[100]; 103 | byte array2[300]; 104 | LENGTH_OF(array1) returns 100 105 | LENGTH_OF(array2) returns 300 106 | ~~~ 107 | 108 | 109 | ## Design 110 | 111 | > Designing software is an exercise in managing complexity. The complexity exists within the software design itself, within the software organization of the company, and within the industry as a whole. Software design is very similar to systems design. It can span multiple technologies and often involves multiple sub-disciplines. Software specifications tend to be fluid, and change rapidly and often, usually while the design process is still going on. Software development teams also tend to be fluid, likewise often changing in the middle of the design process. In many ways, software bears more resemblance to complex social or organic systems than to hardware. All of this makes software design a difficult and error prone process.  112 | 113 | * Design a queue using stacks. 114 | 115 | * Implement an in­-memory job queue. (Thanks @easeway) 116 | 117 | Description: 118 | 119 | Jobs are created by users, so each job is associated with a certain user id. The execution time of a job varies. It is possible a job takes hours up­ to days. There's a fixed number of job consumers and each of them pops a job from the queue and executes it. 120 | 121 | In such a system like above, a common problem is if a user creates too many jobs and each takes quite long time to execute, he may exhausts all the job consumers and other users can't get their jobs run. 122 | 123 | To improve the quality of service, only one job from the same user can be executed at the same time, and no more than `M` jobs can be queued for the same user (all up­coming jobs will be rejected). 124 | The order of jobs pushed by the same user must be preserved. 125 | 126 | In general, it should has requimrents as below but not limted to: 127 | 128 | * Mutiple reader and writer for tasks 129 | * Fetching task definitions from remote, such as Redis Queue 130 | * Task workers are in charge of running tasks concurrently 131 | * Limit the number of maximum specific to the same source of task 132 | * Error handling 133 | * ... 134 | 135 | The queue must provide the following interface (pseudo code) 136 | 137 | ~~~C++ 138 | class Job { 139 | public string UserId; 140 | public virtual void Run(); 141 | } 142 | 143 | class FairQueue { 144 | public const int M=5; 145 | 146 | // when there's some jobs in queue, pop one,and returns. 147 | // block when queue is empty. 148 | public Job Dequeue(); 149 | 150 | // enqueue a job. 151 | // If the pending limit exceeds M, returns false. 152 | // otherwise return true after job is enqueued. 153 | public bool Enqueue(Job); 154 | } 155 | ~~~ 156 | 157 | Questions: 158 | 159 | * Design the queue, considering multi­thread environment. 160 | * Write code for implementation. 161 | 162 | * Design a `BackupTask` for the MSSQL Service instance, requirements as below: 163 | 164 | * Backup MSSQL Server database, including different strategies, such as full backup, differential backup and log backup 165 | * Upload backup files to different devices, such CIFS, S3, vBlob, etc. 166 | * Notify the results to any other components interested at that 167 | * Schedule backup tasks, such as once every day or once every hour, etc. 168 | * Error handling 169 | * ... 170 | 171 | * A service exposes simple RESTful APIs for reading and updating objects:(Thanks @easeway) 172 | 173 | ~~~JavaScript 174 | GET http://hostname/api/v1/object/ID 175 | PUT http://hostname/api/v1/object/ID(with data encoded as JSON in payload) 176 | ~~~ 177 | 178 | As a client, it uses library which provides 4 functions wrapping the above APIs: 179 | 180 | ~~~C++ 181 | object get_object(id) 182 | update_object(object) 183 | ~~~ 184 | 185 | When a client application wants to perform an atomic update of the object, the logic is like: 186 | 187 | ~~~C++ 188 | object calc_and_update(id){ 189 | obj=get_object(id) 190 | calculate(obj) // update attributes according to current values 191 | update_object(obj) 192 | return obj; 193 | } 194 | ~~~ 195 | 196 | The problem with above logic is: 197 | 198 | * when there's multiple clients working concurrently 199 | * the above logic is not atomic 200 | 201 | Questions: 202 | 203 | * Please analyze the inconsistency scenarios 204 | * How to solve the problem 205 | 206 | * Design the algorithm judging whether two rectangle has crossed and also calculate the crossed area if it exists. 207 | 208 | ~~~C++ 209 | struct Rect { 210 | int x, y; // left-upper coordinators 211 | int w, h; // width and height 212 | }; 213 | ~~~ 214 | 215 | Implement the function: 216 | ~~~C++ 217 | bool rectOverlap(constRect &r1, const Rect &r2, Rect& overlap); 218 | ~~~ 219 | 220 | If there's an overlapping, fill overlap with the overlapped area then return true, otherwise, leave overlap untouched then return false. 221 | 222 | 223 | ## Backend Linux 224 | 225 | * Explain load_avg/buffer/cache metrics in linux. 226 | * Explain CLOSE_WAIT/TIME_WAIT in tcp connection. 227 | * How to debug a hanging process? 228 | * How to debug iptables rules? 229 | * How to find the remote port is opened? 230 | * How to find how many fds a process has opened? 231 | * How to find last boot log? 232 | * How to combine several commits in local git repo? 233 | * Tell me your git work flow to do a hotfix. 234 | * What's umask? 235 | * Tell me as many ways as you can to copy a file to remote server in bash. 236 | * Do you know the meaning for these commands: ps/sort/awk/join/pwd/iostat/vmstat/top/kill? 237 | * Let's assume that host is a local machine, and host2 is a remote machine. But as for kinds of reasons, these two computers couldn't communicate between each other. But, there is another one host named host3 and it could connect to host1 and host2. So how can I let host1 connect to host2? 238 | * Changing filenames in batch using shell scripts. eg: aa-1.1.txt -> aa.txt; ab-1.2.3.4.txt -> ab.txt; aa-bb-cc-1.1.txt -> aa-bb-cc.txt. 239 | * Read a file of text, determine the n most frequently used words, and print out a sorted list of those words along with their frequencies. -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | GNU GENERAL PUBLIC LICENSE 2 | Version 3, 29 June 2007 3 | 4 | Copyright (C) 2007 Free Software Foundation, Inc. 5 | Everyone is permitted to copy and distribute verbatim copies 6 | of this license document, but changing it is not allowed. 7 | 8 | Preamble 9 | 10 | The GNU General Public License is a free, copyleft license for 11 | software and other kinds of works. 12 | 13 | The licenses for most software and other practical works are designed 14 | to take away your freedom to share and change the works. By contrast, 15 | the GNU General Public License is intended to guarantee your freedom to 16 | share and change all versions of a program--to make sure it remains free 17 | software for all its users. We, the Free Software Foundation, use the 18 | GNU General Public License for most of our software; it applies also to 19 | any other work released this way by its authors. You can apply it to 20 | your programs, too. 21 | 22 | When we speak of free software, we are referring to freedom, not 23 | price. Our General Public Licenses are designed to make sure that you 24 | have the freedom to distribute copies of free software (and charge for 25 | them if you wish), that you receive source code or can get it if you 26 | want it, that you can change the software or use pieces of it in new 27 | free programs, and that you know you can do these things. 28 | 29 | To protect your rights, we need to prevent others from denying you 30 | these rights or asking you to surrender the rights. Therefore, you have 31 | certain responsibilities if you distribute copies of the software, or if 32 | you modify it: responsibilities to respect the freedom of others. 33 | 34 | For example, if you distribute copies of such a program, whether 35 | gratis or for a fee, you must pass on to the recipients the same 36 | freedoms that you received. You must make sure that they, too, receive 37 | or can get the source code. And you must show them these terms so they 38 | know their rights. 39 | 40 | Developers that use the GNU GPL protect your rights with two steps: 41 | (1) assert copyright on the software, and (2) offer you this License 42 | giving you legal permission to copy, distribute and/or modify it. 43 | 44 | For the developers' and authors' protection, the GPL clearly explains 45 | that there is no warranty for this free software. For both users' and 46 | authors' sake, the GPL requires that modified versions be marked as 47 | changed, so that their problems will not be attributed erroneously to 48 | authors of previous versions. 49 | 50 | Some devices are designed to deny users access to install or run 51 | modified versions of the software inside them, although the manufacturer 52 | can do so. This is fundamentally incompatible with the aim of 53 | protecting users' freedom to change the software. The systematic 54 | pattern of such abuse occurs in the area of products for individuals to 55 | use, which is precisely where it is most unacceptable. Therefore, we 56 | have designed this version of the GPL to prohibit the practice for those 57 | products. If such problems arise substantially in other domains, we 58 | stand ready to extend this provision to those domains in future versions 59 | of the GPL, as needed to protect the freedom of users. 60 | 61 | Finally, every program is threatened constantly by software patents. 62 | States should not allow patents to restrict development and use of 63 | software on general-purpose computers, but in those that do, we wish to 64 | avoid the special danger that patents applied to a free program could 65 | make it effectively proprietary. To prevent this, the GPL assures that 66 | patents cannot be used to render the program non-free. 67 | 68 | The precise terms and conditions for copying, distribution and 69 | modification follow. 70 | 71 | TERMS AND CONDITIONS 72 | 73 | 0. Definitions. 74 | 75 | "This License" refers to version 3 of the GNU General Public License. 76 | 77 | "Copyright" also means copyright-like laws that apply to other kinds of 78 | works, such as semiconductor masks. 79 | 80 | "The Program" refers to any copyrightable work licensed under this 81 | License. Each licensee is addressed as "you". "Licensees" and 82 | "recipients" may be individuals or organizations. 83 | 84 | To "modify" a work means to copy from or adapt all or part of the work 85 | in a fashion requiring copyright permission, other than the making of an 86 | exact copy. The resulting work is called a "modified version" of the 87 | earlier work or a work "based on" the earlier work. 88 | 89 | A "covered work" means either the unmodified Program or a work based 90 | on the Program. 91 | 92 | To "propagate" a work means to do anything with it that, without 93 | permission, would make you directly or secondarily liable for 94 | infringement under applicable copyright law, except executing it on a 95 | computer or modifying a private copy. Propagation includes copying, 96 | distribution (with or without modification), making available to the 97 | public, and in some countries other activities as well. 98 | 99 | To "convey" a work means any kind of propagation that enables other 100 | parties to make or receive copies. Mere interaction with a user through 101 | a computer network, with no transfer of a copy, is not conveying. 102 | 103 | An interactive user interface displays "Appropriate Legal Notices" 104 | to the extent that it includes a convenient and prominently visible 105 | feature that (1) displays an appropriate copyright notice, and (2) 106 | tells the user that there is no warranty for the work (except to the 107 | extent that warranties are provided), that licensees may convey the 108 | work under this License, and how to view a copy of this License. If 109 | the interface presents a list of user commands or options, such as a 110 | menu, a prominent item in the list meets this criterion. 111 | 112 | 1. Source Code. 113 | 114 | The "source code" for a work means the preferred form of the work 115 | for making modifications to it. "Object code" means any non-source 116 | form of a work. 117 | 118 | A "Standard Interface" means an interface that either is an official 119 | standard defined by a recognized standards body, or, in the case of 120 | interfaces specified for a particular programming language, one that 121 | is widely used among developers working in that language. 122 | 123 | The "System Libraries" of an executable work include anything, other 124 | than the work as a whole, that (a) is included in the normal form of 125 | packaging a Major Component, but which is not part of that Major 126 | Component, and (b) serves only to enable use of the work with that 127 | Major Component, or to implement a Standard Interface for which an 128 | implementation is available to the public in source code form. A 129 | "Major Component", in this context, means a major essential component 130 | (kernel, window system, and so on) of the specific operating system 131 | (if any) on which the executable work runs, or a compiler used to 132 | produce the work, or an object code interpreter used to run it. 133 | 134 | The "Corresponding Source" for a work in object code form means all 135 | the source code needed to generate, install, and (for an executable 136 | work) run the object code and to modify the work, including scripts to 137 | control those activities. However, it does not include the work's 138 | System Libraries, or general-purpose tools or generally available free 139 | programs which are used unmodified in performing those activities but 140 | which are not part of the work. For example, Corresponding Source 141 | includes interface definition files associated with source files for 142 | the work, and the source code for shared libraries and dynamically 143 | linked subprograms that the work is specifically designed to require, 144 | such as by intimate data communication or control flow between those 145 | subprograms and other parts of the work. 146 | 147 | The Corresponding Source need not include anything that users 148 | can regenerate automatically from other parts of the Corresponding 149 | Source. 150 | 151 | The Corresponding Source for a work in source code form is that 152 | same work. 153 | 154 | 2. Basic Permissions. 155 | 156 | All rights granted under this License are granted for the term of 157 | copyright on the Program, and are irrevocable provided the stated 158 | conditions are met. This License explicitly affirms your unlimited 159 | permission to run the unmodified Program. The output from running a 160 | covered work is covered by this License only if the output, given its 161 | content, constitutes a covered work. This License acknowledges your 162 | rights of fair use or other equivalent, as provided by copyright law. 163 | 164 | You may make, run and propagate covered works that you do not 165 | convey, without conditions so long as your license otherwise remains 166 | in force. You may convey covered works to others for the sole purpose 167 | of having them make modifications exclusively for you, or provide you 168 | with facilities for running those works, provided that you comply with 169 | the terms of this License in conveying all material for which you do 170 | not control copyright. Those thus making or running the covered works 171 | for you must do so exclusively on your behalf, under your direction 172 | and control, on terms that prohibit them from making any copies of 173 | your copyrighted material outside their relationship with you. 174 | 175 | Conveying under any other circumstances is permitted solely under 176 | the conditions stated below. Sublicensing is not allowed; section 10 177 | makes it unnecessary. 178 | 179 | 3. Protecting Users' Legal Rights From Anti-Circumvention Law. 180 | 181 | No covered work shall be deemed part of an effective technological 182 | measure under any applicable law fulfilling obligations under article 183 | 11 of the WIPO copyright treaty adopted on 20 December 1996, or 184 | similar laws prohibiting or restricting circumvention of such 185 | measures. 186 | 187 | When you convey a covered work, you waive any legal power to forbid 188 | circumvention of technological measures to the extent such circumvention 189 | is effected by exercising rights under this License with respect to 190 | the covered work, and you disclaim any intention to limit operation or 191 | modification of the work as a means of enforcing, against the work's 192 | users, your or third parties' legal rights to forbid circumvention of 193 | technological measures. 194 | 195 | 4. Conveying Verbatim Copies. 196 | 197 | You may convey verbatim copies of the Program's source code as you 198 | receive it, in any medium, provided that you conspicuously and 199 | appropriately publish on each copy an appropriate copyright notice; 200 | keep intact all notices stating that this License and any 201 | non-permissive terms added in accord with section 7 apply to the code; 202 | keep intact all notices of the absence of any warranty; and give all 203 | recipients a copy of this License along with the Program. 204 | 205 | You may charge any price or no price for each copy that you convey, 206 | and you may offer support or warranty protection for a fee. 207 | 208 | 5. Conveying Modified Source Versions. 209 | 210 | You may convey a work based on the Program, or the modifications to 211 | produce it from the Program, in the form of source code under the 212 | terms of section 4, provided that you also meet all of these conditions: 213 | 214 | a) The work must carry prominent notices stating that you modified 215 | it, and giving a relevant date. 216 | 217 | b) The work must carry prominent notices stating that it is 218 | released under this License and any conditions added under section 219 | 7. This requirement modifies the requirement in section 4 to 220 | "keep intact all notices". 221 | 222 | c) You must license the entire work, as a whole, under this 223 | License to anyone who comes into possession of a copy. This 224 | License will therefore apply, along with any applicable section 7 225 | additional terms, to the whole of the work, and all its parts, 226 | regardless of how they are packaged. This License gives no 227 | permission to license the work in any other way, but it does not 228 | invalidate such permission if you have separately received it. 229 | 230 | d) If the work has interactive user interfaces, each must display 231 | Appropriate Legal Notices; however, if the Program has interactive 232 | interfaces that do not display Appropriate Legal Notices, your 233 | work need not make them do so. 234 | 235 | A compilation of a covered work with other separate and independent 236 | works, which are not by their nature extensions of the covered work, 237 | and which are not combined with it such as to form a larger program, 238 | in or on a volume of a storage or distribution medium, is called an 239 | "aggregate" if the compilation and its resulting copyright are not 240 | used to limit the access or legal rights of the compilation's users 241 | beyond what the individual works permit. Inclusion of a covered work 242 | in an aggregate does not cause this License to apply to the other 243 | parts of the aggregate. 244 | 245 | 6. Conveying Non-Source Forms. 246 | 247 | You may convey a covered work in object code form under the terms 248 | of sections 4 and 5, provided that you also convey the 249 | machine-readable Corresponding Source under the terms of this License, 250 | in one of these ways: 251 | 252 | a) Convey the object code in, or embodied in, a physical product 253 | (including a physical distribution medium), accompanied by the 254 | Corresponding Source fixed on a durable physical medium 255 | customarily used for software interchange. 256 | 257 | b) Convey the object code in, or embodied in, a physical product 258 | (including a physical distribution medium), accompanied by a 259 | written offer, valid for at least three years and valid for as 260 | long as you offer spare parts or customer support for that product 261 | model, to give anyone who possesses the object code either (1) a 262 | copy of the Corresponding Source for all the software in the 263 | product that is covered by this License, on a durable physical 264 | medium customarily used for software interchange, for a price no 265 | more than your reasonable cost of physically performing this 266 | conveying of source, or (2) access to copy the 267 | Corresponding Source from a network server at no charge. 268 | 269 | c) Convey individual copies of the object code with a copy of the 270 | written offer to provide the Corresponding Source. This 271 | alternative is allowed only occasionally and noncommercially, and 272 | only if you received the object code with such an offer, in accord 273 | with subsection 6b. 274 | 275 | d) Convey the object code by offering access from a designated 276 | place (gratis or for a charge), and offer equivalent access to the 277 | Corresponding Source in the same way through the same place at no 278 | further charge. You need not require recipients to copy the 279 | Corresponding Source along with the object code. If the place to 280 | copy the object code is a network server, the Corresponding Source 281 | may be on a different server (operated by you or a third party) 282 | that supports equivalent copying facilities, provided you maintain 283 | clear directions next to the object code saying where to find the 284 | Corresponding Source. Regardless of what server hosts the 285 | Corresponding Source, you remain obligated to ensure that it is 286 | available for as long as needed to satisfy these requirements. 287 | 288 | e) Convey the object code using peer-to-peer transmission, provided 289 | you inform other peers where the object code and Corresponding 290 | Source of the work are being offered to the general public at no 291 | charge under subsection 6d. 292 | 293 | A separable portion of the object code, whose source code is excluded 294 | from the Corresponding Source as a System Library, need not be 295 | included in conveying the object code work. 296 | 297 | A "User Product" is either (1) a "consumer product", which means any 298 | tangible personal property which is normally used for personal, family, 299 | or household purposes, or (2) anything designed or sold for incorporation 300 | into a dwelling. In determining whether a product is a consumer product, 301 | doubtful cases shall be resolved in favor of coverage. For a particular 302 | product received by a particular user, "normally used" refers to a 303 | typical or common use of that class of product, regardless of the status 304 | of the particular user or of the way in which the particular user 305 | actually uses, or expects or is expected to use, the product. A product 306 | is a consumer product regardless of whether the product has substantial 307 | commercial, industrial or non-consumer uses, unless such uses represent 308 | the only significant mode of use of the product. 309 | 310 | "Installation Information" for a User Product means any methods, 311 | procedures, authorization keys, or other information required to install 312 | and execute modified versions of a covered work in that User Product from 313 | a modified version of its Corresponding Source. The information must 314 | suffice to ensure that the continued functioning of the modified object 315 | code is in no case prevented or interfered with solely because 316 | modification has been made. 317 | 318 | If you convey an object code work under this section in, or with, or 319 | specifically for use in, a User Product, and the conveying occurs as 320 | part of a transaction in which the right of possession and use of the 321 | User Product is transferred to the recipient in perpetuity or for a 322 | fixed term (regardless of how the transaction is characterized), the 323 | Corresponding Source conveyed under this section must be accompanied 324 | by the Installation Information. But this requirement does not apply 325 | if neither you nor any third party retains the ability to install 326 | modified object code on the User Product (for example, the work has 327 | been installed in ROM). 328 | 329 | The requirement to provide Installation Information does not include a 330 | requirement to continue to provide support service, warranty, or updates 331 | for a work that has been modified or installed by the recipient, or for 332 | the User Product in which it has been modified or installed. Access to a 333 | network may be denied when the modification itself materially and 334 | adversely affects the operation of the network or violates the rules and 335 | protocols for communication across the network. 336 | 337 | Corresponding Source conveyed, and Installation Information provided, 338 | in accord with this section must be in a format that is publicly 339 | documented (and with an implementation available to the public in 340 | source code form), and must require no special password or key for 341 | unpacking, reading or copying. 342 | 343 | 7. Additional Terms. 344 | 345 | "Additional permissions" are terms that supplement the terms of this 346 | License by making exceptions from one or more of its conditions. 347 | Additional permissions that are applicable to the entire Program shall 348 | be treated as though they were included in this License, to the extent 349 | that they are valid under applicable law. If additional permissions 350 | apply only to part of the Program, that part may be used separately 351 | under those permissions, but the entire Program remains governed by 352 | this License without regard to the additional permissions. 353 | 354 | When you convey a copy of a covered work, you may at your option 355 | remove any additional permissions from that copy, or from any part of 356 | it. (Additional permissions may be written to require their own 357 | removal in certain cases when you modify the work.) You may place 358 | additional permissions on material, added by you to a covered work, 359 | for which you have or can give appropriate copyright permission. 360 | 361 | Notwithstanding any other provision of this License, for material you 362 | add to a covered work, you may (if authorized by the copyright holders of 363 | that material) supplement the terms of this License with terms: 364 | 365 | a) Disclaiming warranty or limiting liability differently from the 366 | terms of sections 15 and 16 of this License; or 367 | 368 | b) Requiring preservation of specified reasonable legal notices or 369 | author attributions in that material or in the Appropriate Legal 370 | Notices displayed by works containing it; or 371 | 372 | c) Prohibiting misrepresentation of the origin of that material, or 373 | requiring that modified versions of such material be marked in 374 | reasonable ways as different from the original version; or 375 | 376 | d) Limiting the use for publicity purposes of names of licensors or 377 | authors of the material; or 378 | 379 | e) Declining to grant rights under trademark law for use of some 380 | trade names, trademarks, or service marks; or 381 | 382 | f) Requiring indemnification of licensors and authors of that 383 | material by anyone who conveys the material (or modified versions of 384 | it) with contractual assumptions of liability to the recipient, for 385 | any liability that these contractual assumptions directly impose on 386 | those licensors and authors. 387 | 388 | All other non-permissive additional terms are considered "further 389 | restrictions" within the meaning of section 10. If the Program as you 390 | received it, or any part of it, contains a notice stating that it is 391 | governed by this License along with a term that is a further 392 | restriction, you may remove that term. If a license document contains 393 | a further restriction but permits relicensing or conveying under this 394 | License, you may add to a covered work material governed by the terms 395 | of that license document, provided that the further restriction does 396 | not survive such relicensing or conveying. 397 | 398 | If you add terms to a covered work in accord with this section, you 399 | must place, in the relevant source files, a statement of the 400 | additional terms that apply to those files, or a notice indicating 401 | where to find the applicable terms. 402 | 403 | Additional terms, permissive or non-permissive, may be stated in the 404 | form of a separately written license, or stated as exceptions; 405 | the above requirements apply either way. 406 | 407 | 8. Termination. 408 | 409 | You may not propagate or modify a covered work except as expressly 410 | provided under this License. Any attempt otherwise to propagate or 411 | modify it is void, and will automatically terminate your rights under 412 | this License (including any patent licenses granted under the third 413 | paragraph of section 11). 414 | 415 | However, if you cease all violation of this License, then your 416 | license from a particular copyright holder is reinstated (a) 417 | provisionally, unless and until the copyright holder explicitly and 418 | finally terminates your license, and (b) permanently, if the copyright 419 | holder fails to notify you of the violation by some reasonable means 420 | prior to 60 days after the cessation. 421 | 422 | Moreover, your license from a particular copyright holder is 423 | reinstated permanently if the copyright holder notifies you of the 424 | violation by some reasonable means, this is the first time you have 425 | received notice of violation of this License (for any work) from that 426 | copyright holder, and you cure the violation prior to 30 days after 427 | your receipt of the notice. 428 | 429 | Termination of your rights under this section does not terminate the 430 | licenses of parties who have received copies or rights from you under 431 | this License. If your rights have been terminated and not permanently 432 | reinstated, you do not qualify to receive new licenses for the same 433 | material under section 10. 434 | 435 | 9. Acceptance Not Required for Having Copies. 436 | 437 | You are not required to accept this License in order to receive or 438 | run a copy of the Program. Ancillary propagation of a covered work 439 | occurring solely as a consequence of using peer-to-peer transmission 440 | to receive a copy likewise does not require acceptance. However, 441 | nothing other than this License grants you permission to propagate or 442 | modify any covered work. These actions infringe copyright if you do 443 | not accept this License. Therefore, by modifying or propagating a 444 | covered work, you indicate your acceptance of this License to do so. 445 | 446 | 10. Automatic Licensing of Downstream Recipients. 447 | 448 | Each time you convey a covered work, the recipient automatically 449 | receives a license from the original licensors, to run, modify and 450 | propagate that work, subject to this License. You are not responsible 451 | for enforcing compliance by third parties with this License. 452 | 453 | An "entity transaction" is a transaction transferring control of an 454 | organization, or substantially all assets of one, or subdividing an 455 | organization, or merging organizations. If propagation of a covered 456 | work results from an entity transaction, each party to that 457 | transaction who receives a copy of the work also receives whatever 458 | licenses to the work the party's predecessor in interest had or could 459 | give under the previous paragraph, plus a right to possession of the 460 | Corresponding Source of the work from the predecessor in interest, if 461 | the predecessor has it or can get it with reasonable efforts. 462 | 463 | You may not impose any further restrictions on the exercise of the 464 | rights granted or affirmed under this License. For example, you may 465 | not impose a license fee, royalty, or other charge for exercise of 466 | rights granted under this License, and you may not initiate litigation 467 | (including a cross-claim or counterclaim in a lawsuit) alleging that 468 | any patent claim is infringed by making, using, selling, offering for 469 | sale, or importing the Program or any portion of it. 470 | 471 | 11. Patents. 472 | 473 | A "contributor" is a copyright holder who authorizes use under this 474 | License of the Program or a work on which the Program is based. The 475 | work thus licensed is called the contributor's "contributor version". 476 | 477 | A contributor's "essential patent claims" are all patent claims 478 | owned or controlled by the contributor, whether already acquired or 479 | hereafter acquired, that would be infringed by some manner, permitted 480 | by this License, of making, using, or selling its contributor version, 481 | but do not include claims that would be infringed only as a 482 | consequence of further modification of the contributor version. For 483 | purposes of this definition, "control" includes the right to grant 484 | patent sublicenses in a manner consistent with the requirements of 485 | this License. 486 | 487 | Each contributor grants you a non-exclusive, worldwide, royalty-free 488 | patent license under the contributor's essential patent claims, to 489 | make, use, sell, offer for sale, import and otherwise run, modify and 490 | propagate the contents of its contributor version. 491 | 492 | In the following three paragraphs, a "patent license" is any express 493 | agreement or commitment, however denominated, not to enforce a patent 494 | (such as an express permission to practice a patent or covenant not to 495 | sue for patent infringement). To "grant" such a patent license to a 496 | party means to make such an agreement or commitment not to enforce a 497 | patent against the party. 498 | 499 | If you convey a covered work, knowingly relying on a patent license, 500 | and the Corresponding Source of the work is not available for anyone 501 | to copy, free of charge and under the terms of this License, through a 502 | publicly available network server or other readily accessible means, 503 | then you must either (1) cause the Corresponding Source to be so 504 | available, or (2) arrange to deprive yourself of the benefit of the 505 | patent license for this particular work, or (3) arrange, in a manner 506 | consistent with the requirements of this License, to extend the patent 507 | license to downstream recipients. "Knowingly relying" means you have 508 | actual knowledge that, but for the patent license, your conveying the 509 | covered work in a country, or your recipient's use of the covered work 510 | in a country, would infringe one or more identifiable patents in that 511 | country that you have reason to believe are valid. 512 | 513 | If, pursuant to or in connection with a single transaction or 514 | arrangement, you convey, or propagate by procuring conveyance of, a 515 | covered work, and grant a patent license to some of the parties 516 | receiving the covered work authorizing them to use, propagate, modify 517 | or convey a specific copy of the covered work, then the patent license 518 | you grant is automatically extended to all recipients of the covered 519 | work and works based on it. 520 | 521 | A patent license is "discriminatory" if it does not include within 522 | the scope of its coverage, prohibits the exercise of, or is 523 | conditioned on the non-exercise of one or more of the rights that are 524 | specifically granted under this License. You may not convey a covered 525 | work if you are a party to an arrangement with a third party that is 526 | in the business of distributing software, under which you make payment 527 | to the third party based on the extent of your activity of conveying 528 | the work, and under which the third party grants, to any of the 529 | parties who would receive the covered work from you, a discriminatory 530 | patent license (a) in connection with copies of the covered work 531 | conveyed by you (or copies made from those copies), or (b) primarily 532 | for and in connection with specific products or compilations that 533 | contain the covered work, unless you entered into that arrangement, 534 | or that patent license was granted, prior to 28 March 2007. 535 | 536 | Nothing in this License shall be construed as excluding or limiting 537 | any implied license or other defenses to infringement that may 538 | otherwise be available to you under applicable patent law. 539 | 540 | 12. No Surrender of Others' Freedom. 541 | 542 | If conditions are imposed on you (whether by court order, agreement or 543 | otherwise) that contradict the conditions of this License, they do not 544 | excuse you from the conditions of this License. If you cannot convey a 545 | covered work so as to satisfy simultaneously your obligations under this 546 | License and any other pertinent obligations, then as a consequence you may 547 | not convey it at all. For example, if you agree to terms that obligate you 548 | to collect a royalty for further conveying from those to whom you convey 549 | the Program, the only way you could satisfy both those terms and this 550 | License would be to refrain entirely from conveying the Program. 551 | 552 | 13. Use with the GNU Affero General Public License. 553 | 554 | Notwithstanding any other provision of this License, you have 555 | permission to link or combine any covered work with a work licensed 556 | under version 3 of the GNU Affero General Public License into a single 557 | combined work, and to convey the resulting work. The terms of this 558 | License will continue to apply to the part which is the covered work, 559 | but the special requirements of the GNU Affero General Public License, 560 | section 13, concerning interaction through a network will apply to the 561 | combination as such. 562 | 563 | 14. Revised Versions of this License. 564 | 565 | The Free Software Foundation may publish revised and/or new versions of 566 | the GNU General Public License from time to time. Such new versions will 567 | be similar in spirit to the present version, but may differ in detail to 568 | address new problems or concerns. 569 | 570 | Each version is given a distinguishing version number. If the 571 | Program specifies that a certain numbered version of the GNU General 572 | Public License "or any later version" applies to it, you have the 573 | option of following the terms and conditions either of that numbered 574 | version or of any later version published by the Free Software 575 | Foundation. If the Program does not specify a version number of the 576 | GNU General Public License, you may choose any version ever published 577 | by the Free Software Foundation. 578 | 579 | If the Program specifies that a proxy can decide which future 580 | versions of the GNU General Public License can be used, that proxy's 581 | public statement of acceptance of a version permanently authorizes you 582 | to choose that version for the Program. 583 | 584 | Later license versions may give you additional or different 585 | permissions. However, no additional obligations are imposed on any 586 | author or copyright holder as a result of your choosing to follow a 587 | later version. 588 | 589 | 15. Disclaimer of Warranty. 590 | 591 | THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY 592 | APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT 593 | HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY 594 | OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, 595 | THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 596 | PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM 597 | IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF 598 | ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 599 | 600 | 16. Limitation of Liability. 601 | 602 | IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING 603 | WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS 604 | THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY 605 | GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE 606 | USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF 607 | DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD 608 | PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), 609 | EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF 610 | SUCH DAMAGES. 611 | 612 | 17. Interpretation of Sections 15 and 16. 613 | 614 | If the disclaimer of warranty and limitation of liability provided 615 | above cannot be given local legal effect according to their terms, 616 | reviewing courts shall apply local law that most closely approximates 617 | an absolute waiver of all civil liability in connection with the 618 | Program, unless a warranty or assumption of liability accompanies a 619 | copy of the Program in return for a fee. 620 | 621 | END OF TERMS AND CONDITIONS 622 | 623 | How to Apply These Terms to Your New Programs 624 | 625 | If you develop a new program, and you want it to be of the greatest 626 | possible use to the public, the best way to achieve this is to make it 627 | free software which everyone can redistribute and change under these terms. 628 | 629 | To do so, attach the following notices to the program. It is safest 630 | to attach them to the start of each source file to most effectively 631 | state the exclusion of warranty; and each file should have at least 632 | the "copyright" line and a pointer to where the full notice is found. 633 | 634 | 635 | Copyright (C) 636 | 637 | This program is free software: you can redistribute it and/or modify 638 | it under the terms of the GNU General Public License as published by 639 | the Free Software Foundation, either version 3 of the License, or 640 | (at your option) any later version. 641 | 642 | This program is distributed in the hope that it will be useful, 643 | but WITHOUT ANY WARRANTY; without even the implied warranty of 644 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 645 | GNU General Public License for more details. 646 | 647 | You should have received a copy of the GNU General Public License 648 | along with this program. If not, see . 649 | 650 | Also add information on how to contact you by electronic and paper mail. 651 | 652 | If the program does terminal interaction, make it output a short 653 | notice like this when it starts in an interactive mode: 654 | 655 | Copyright (C) 656 | This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. 657 | This is free software, and you are welcome to redistribute it 658 | under certain conditions; type `show c' for details. 659 | 660 | The hypothetical commands `show w' and `show c' should show the appropriate 661 | parts of the General Public License. Of course, your program's commands 662 | might be different; for a GUI interface, you would use an "about box". 663 | 664 | You should also get your employer (if you work as a programmer) or school, 665 | if any, to sign a "copyright disclaimer" for the program, if necessary. 666 | For more information on this, and how to apply and follow the GNU GPL, see 667 | . 668 | 669 | The GNU General Public License does not permit incorporating your program 670 | into proprietary programs. If your program is a subroutine library, you 671 | may consider it more useful to permit linking proprietary applications with 672 | the library. If this is what you want to do, use the GNU Lesser General 673 | Public License instead of this License. But first, please read 674 | . 675 | --------------------------------------------------------------------------------