Wednesday, December 15, 2010

Python Interview Questions and Answers 3

Ah, that makes more sense. Well, look over the socket module, and familiarize yourself with general socket programming. When I test specifically on Python knowledge, here are the general modules that I cover (along with general Python semantics - duck typing, list comprehensions, immutable versusmutable, etc):
sys, os, time, re, string, random, threading, socket, os.path, and types. These are, in descending order, the most commonly occuring modules in the Python package.

Overviewing http://www.diveintopython.org/ may be a good idea too; it tends to focus on Python specific idioms, which will most likely be the focus of the test.

# Re: How to make composited software?
Hello,

1) Study these guides (notes) here:
http://ubuntuforums.org/showthread.p...18#post3627418

Note 5) has links to OpenGL, SDL and other guides.
Install Code::Blocks IDE if you like but Anjuta, KDevelop or bare command line are equally fine.

2) Learn to program with C or C++ and Cairo graphics.
Cairo is a must to know.
http://cairographics.org/samples/

3) Download this MacSlow's Cairo-clock and study the source code.
http://macslow.thepimp.net/?page_id=23

Study also the source code of Avant Window Navigator.

You could try Bruce Eckel's free Thinking in C++ book. It's not for complete newbie programmers, but it teaches correct C++ AFAIK.

# Python Interview Questions and Answers

http://ronak15.blogspot.com/2009/05/python-interview-questions-and-answers.html

Hi Everybody,

As always interview questions but this time I was lucky to be interviewed for Python, which I had recent experience on. And the interviewer was great. He told me that he had pretty much fundamental and short questions to ask and he joked about MS interviewees will be joyed with this kind of interview process.

This was basically a python position but this made me feel why people cannot do with other programming language experts for python because a python programmer is really way too different than a C++ or Java programmer. Since I am a C++ programmer with recent experience in Python, I was considered for the position. It was fun going through the interview since it was web conference coding interview.

What I had gone through was the LinuxCBT edition of python which helped me a lot. If I had not referred that I would have done miserably.

I had tried searching for python questions over the internet but was not too lucky since I got only a few of them which made sense. Some of them were asked but restricting to just a couple of them. So I think my questions and answers will really help people to get a good idea on what can be asked for python interviews and also for people who are getting interviewed on python. I really appreciate comments and improvements on the questions and answers.

Hope the information helps.....


1. Name five modules that are included in python by default

2. Name a module that is not included in python by default

3. What is __init__.py used for?

4. When is pass used for?

5. What is a docstring?

6. What is list comprehension?

7. What is map?

8. What is the difference between a tuple and a list?

Ans. This is the most frequently asked question on python.

A tuple is a list that is immutable. A list is mutable i.e. The members can be changed and altered but a tuple is immutable i.e. the members cannot be changed.

Other significant difference is of the syntax. A list is defined as

list1 = [1,2,5,8,5,3,]
list2 = ["Sachin", "Ramesh", "Tendulkar"]

A tuple is defined in the following way

tup1 = (1,4,2,4,6,7,8)
tup2 = ("Sachin","Ramesh", "Tendulkar")

So the difference is in the type of brackets.


Coding questions

9. Using various python modules convert the list a to generate the output 'one, two, three'
a = ['one', 'two', 'three']

10. What would the following code yield?

  word = 'abcdefghij'
print word[:3] + word[3:]
Ans. This will print the word 'abcdefghij'

11. Optimize these statements as a python programmer
word = 'word'
print word.__len__()

12. Write a program to print all the contents of a file

Ans.
  try:
f1=open("filename.txt","r")
except Exception, e:
print "%s" %e

print f1.readlines()

13. What will be the output of the following code
a = 1
a,b=a+1,a+1
print a
print b

Ans.

2
2

Here in the second line a,b=a+1,a+1 means that a=a+1 and b=a+1 which is 2. But this is the python way of initialization which a python programmer should understand.

14. Given the list below remove the repetition of an element. All the elements should be unique
words = ['one', 'one', 'two', 'three', 'three', 'two']


15. Iterate over a list of words and use a dictionary to keep track of the frequency(count) of each word. for example
{'one':2,'two':2,'three':2}

16.Write the following logic in Python:
If a list of words is empty, then let the user know it's empty, otherwise let the user know it's not empty.

Ans.
a=[]
if len(a):
print"The list is empty"
else:
print"The list is not empty"


The will not work but me being a c++ programmer, I would not code it this way, I would have coded the following way

a=[]
if len(a) == 0:
print"The list is empty"
else:
print"The list is not empty"

This works but the above implementation does not. Can somebody tell me what is wrong with the above code. Because the interviewer told me that a python programmer would code it that way rather than my way. That was a good lesson. When you code in python, you tend to demonstrate your background with such mistakes. :D

17. Demonstrate the use of exception handling in python.
Ans.

a=[1,2,3,4]
try:
print a[0]
except Exception, e # This was important. Just do not say except: and print out something. It is
print e # Important to know what is the error

This could also have been better. If somebody knows a better way than the above code, I would really appreciate it.

18. Print the length of each line in the file 'file.txt' not including any whitespaces at the end of the lines.
f1=open("filename.txt","r")
leng=f1.readline()
print len(leng) -1, "is the length of the string"

Since the last character is a whitespace we deduct 1 out of the length returned by the len() function.

19. Print the sum of digits of numbers starting from 1 to 100
Ans. print sum(range(1,100))

This is way too easy but just who know python. Since I am a C++ Programmer, I started writing a for loop to add up which was way too dumb. Hope you don't make this mistake.

Python is known for it short syntax and easy to use functions.

20. Create a new list that converts the following list of number strings to a list of numbers.
num_strings = ['1','21','53','84','50','66','7','38','9']

Ans.

This one is pretty much easy but not at first. It took me a good half and hour to figure out that it was so easy.

num = [] # This is the new list which will contain all integers instead of the strings
n = len(num_strings) # This will give the length of the list
for i in range(0,n):
num.insert(i,int(a[i]))
print num

21. Create two new lists one with odd numbers and other with even numbers
num_strings = [1,21,53,84,50,66,7,38,9]

  n = len(num_strings)
ceven,codd = 0, 0
odd,even = [],[]

for i in range(0,n):
if num_strings[i]%2 == 0:
even.insert(ceven,num_strings[i])
ceven = ceven + 1
else:
odd.insert(codd,num_strings[i])
codd = codd + 1
print odd
print even


22. Write a program to sort the following intergers in list
nums = [1,5,2,10,3,45,23,1,4,7,9]

nums.sort() # This is the quickest sorting algorithm. This is the best possible way to sort.
print nums

23. Write a for loop that prints all elements of a list and their position in the list.

abc = [4,7,3,2,5,9]
n = len(abc)
for i in range(0,n):
print i+1,"-->", abc[i]

OUTPUT

1 --> 4
2 --> 7
3 --> 3
4 --> 2
5 --> 5


24. The following code is supposed to remove numbers less than 5 from list n, but there is a bug. Fix the bug.
n = [1,2,5,10,3,100,9,24]

for e in n:
if e<5:
n.remove(e)
print n

Ans. The output here will be

[2,3,5,10,100,9,24] which means the 1st and the 5th elements are removed. That is surprising to me. If anybody has an idea on what could be the explanation, I will really appreciate it.

25. What will be the output of the following
def func(x,*y,**z):
print z

func(1,2,3)
Ans.
Here the output is :
{}

If I print all the variables, namely x, y and z it yeilds me this
1 (2,3) {}
so that means that x is 1, that is normal, but I do not understand the reason why y and z yeilds surprising outputs. If anybody can point it out then I would really appreciate it


26. Write a program to swap two numbers.
a = 5
b = 9

def swap(c,d):
return d,c

swap(a,b)

This will print the swapped values of a and b

(9,5)

OR if this does not seem convincing,

a, b = 5, 10

t = a
a=b
b=t

print a,b

27. What will be the output of the following code

class C(object):
def__init__(self):
self.x =1

c=C()
print c.x
print c.x
print c.x
print c.x

Ans.

All the outputs will be 1

1
1
1
1

28. What is wrong with the code

func([1,2,3]) # explicitly passing in a list
func() # using a default empty list

def func(n = []):
#do something with n

print n

Ans. I tried running the code with my addition of printing the value of n in the function and found out the following result

func([1,2,3]) resulted in [1,2,3]
while func() resulted in []

29. What all options will work?

a.

n = 1
print n++

b.

n = 1
print ++n

c.

n = 1
print n+=1

d.

int n = 1
print n = n+1

e.

n =1
n = n+1

From the above options I believe the following will work

b. and e.

There are some problems with a, c and d.

if you try running the code in a , it does not accept n++ but it accepts ++n

n+=1 is not accepted while in d the variable is preceded by an int which is not pythonically correct.

30. In Python function parameters are passed by value or by reference?

Ans. Please refer to this


31.Remove the whitespaces from the string.

s = 'aaa bbb ccc ddd eee'

Ans.

a = string.split(s)
print a
['aaa', 'bbb', 'ccc', 'ddd', 'eee'] # This is the output of print a

print string.join(a)
aaa bbb ccc ddd eee # This is the output of print string.join(a)

32. What does the below mean?

s = a + '[' + b + ':' + c + ']'

33. Optimize the below code

def append_s(words):
new_words=[]
for word in words:
new_words.append(word + 's')
return new_words

for word in append_s(['a','b','c']):
print word

The above code adds a trailing s after each element of the list. Is there a better way one can write the above script?

34. If given the first and last names of bunch of employees how would you store it and what datatype?

Ans. Either a dictionary or just a list with first and last names included in an element.

1 comment: