Technical-C-Latest-18 May 2012
Technical-C-Latest-18 May 2012
2. main()
{
char s[ ]="man";
int i;
for(i=0;s[ i ];i++)
printf(" %c%c%c%c",s[ i ],*(s+i),*(i+s),i[s]);
}
Answer:
mmmm
aaaa
nnnn
Explanation: s[i], *(i+s), *(s+i), i[s] are all different
ways of expressing the same idea. Generally array
name is the base address for that array. Here s is
the base address. i is the index number/
displacement from the base address. So, indirecting
it with * is same as s[i]. i[s] may be surprising. But
in the case of C it is same as s[i].
3. main()
{
float me = 1.1;
double you = 1.1;
if(me==you)
printf("I love U");
else
printf("I hate U");
}
Answer: I hate U
4. main()
{
static int var = 5;
printf("%d ",var--);
if(var)
main();
}
Answer: 5 4 3 2 1
Explanation: When static storage class is given, it is
initialized once. The change in the value of a static
variable is retained even between the function calls.
Main is also treated like any other ordinary function,
which can be called recursively.
5. main()
{
int c[ ]={2.8,3.4,4,6.7,5};
int j,*p=c,*q=c;
for(j=0;j<5;j++) {
printf(" %d ",*c);
++q; }
for(j=0;j<5;j++){
printf(" %d ",*p);
++p; }
}
Answer:
2222223465
Explanation: Initially pointer c is assigned to both p
and q. In the first loop, since only q is incremented
and not c , the value 2 will be printed 5 times. In
second loop p itself is incremented. So the values 2
3 4 6 5 will be printed.
6. main()
{
extern int i;
i=20;
printf("%d",i);
}
Answer:
Linker Error : Undefined symbol '_i'
Explanation: extern storage class in the following
declaration,
extern int i;
specifies to the compiler that the memory for i is
allocated in some other program and that address
will be given to the current program at the time of
linking. But linker finds that no other variable of
name i is available in any other program with
memory space allocated for it. Hence a linker error
has occurred .
7. main()
{
int i=-1,j=-1,k=0,l=2,m;
m=i++&&j++&&k++||l++;
printf("%d %d %d %d %d",i,j,k,l,m);
}
Answer: 0 0 1 3 1
Explanation: Logical operations always give a result
of 1 or 0. And also the logical AND (&&) operator
has higher priority over the logical OR (||) operator.
So the expression ‘i++ && j++ && k++’ is executed
first. The result of this expression is 0 (-1 && -1 &&
0 = 0). Now the expression is 0 || 2 which evaluates
to 1 (because OR operator always gives 1 except for
‘0 || 0’ combination- for which it gives 0). So the
value of m is 1. The values of other variables are
also incremented by 1.
8. main()
{
char *p;
printf("%d %d ",sizeof(*p),sizeof(p));
}
Answer: 1 2
Explanation: The sizeof() operator gives the number
of bytes taken by its operand. P is a character
pointer, which needs one byte for storing its value
(a character). Hence sizeof(*p) gives a value of 1.
Since it needs two bytes to store the address of the
character pointer sizeof(p) gives 2.
9. main()
{
int i=3;
switch(i)
{
default:printf("zero");
case 1: printf("one");
break;
case 2:printf("two");
break;
case 3: printf("three");
break;
}
}
Answer : Three
Explanation: The default case can be placed
anywhere inside the loop. It is executed only when
all other cases doesn't match.
10. main()
{
printf("%x",-1<<4);
}
Answer: fff0
Explanation: -1 is internally represented as all 1's.
When left shifted four times the least significant 4
bits are filled with 0's.The %x format specifier
specifies that the integer value be printed as a
hexadecimal value.
Poornam Info Vision Latest Selection Procedure
11. main()
{
char string[]="Hello World";
display(string);
}
void display(char *string)
{
printf("%s",string);
}
Answer:
Compiler Error: Type mismatch in redeclaration of
function display
Explanation: In third line, when the function display
is encountered, the compiler doesn't know anything
about the function display. It assumes the
arguments and return types to be integers, (which is
the default type). When it sees the actual function
display, the arguments and type contradicts with
what it has assumed previously. Hence a compile
time error occurs.
12. main()
{
int c=- -2;
printf("c=%d",c);
}
Answer:
c=2;
Explanation: Here unary minus (or negation)
operator is used twice. Same maths rules applies,
ie. minus * minus= plus.
Note: However you cannot give like --2. Because --
operator can only be applied to variables as a
decrement operator (eg., i--). 2 is a constant and
not a variable.
main()
{
int i=65;
printf("sizeof(i)=%d",sizeof(i));
}
Answer:
sizeof(i)=1
Explanation: Since the #define replaces the string
int by the macro char
14. main()
{
int i=10;
i=!i>14;
Printf ("i=%d",i);
}
Answer:
i=0
Explanation: In the expression !i>14 , NOT (!)
operator has more precedence than ‘ >’ symbol. ! is
a unary logical operator. !i (!10) is 0 (not of true is
false). 0>14 is false (zero).
15. #include<stdio.h>
main()
{
char s[]={'a','b','c',' ','c',''};
char *p,*str,*str1;
p=&s[3];
str=p;
str1=s;
printf("%d",++*p + ++*str1-32);
}
Answer:
77
Explanation: p is pointing to character ' '. str1 is
pointing to character 'a' ++*p. "p is pointing to ' '
and that is incremented by one." the ASCII value of
' ' is 10, which is then incremented to 11. The value
of ++*p is 11. ++*str1, str1 is pointing to 'a' that is
incremented by 1 and it becomes 'b'. ASCII value of
'b' is 98.
Now performing (11 + 98 – 32), we get 77("M"); So
we get the output 77 :: "M" (Ascii is 77).
16. #include<stdio.h>
main()
{
int a[2][2][2] = { {10,2,3,4}, {5,6,7,8} };
int *p,*q;
p=&a[2][2][2];
*q=***a;
printf("%d----%d",*p,*q);
}
Answer:
SomeGarbageValue---1
Explanation:
p=&a[2][2][2] you declare only two 2D arrays, but
you are trying
to access the third 2D(which you are not declared) it
will print garbage values.
*q=***a starting address of a is assigned integer
pointer. Now q is pointing to starting address of a. If
you print *q, it will print first element of 3D array.
Poornam Info Vison whole Test Paper
17. #include<stdio.h>
main()
{
struct xx
{
int x=3;
char name[]="hello";
};
struct xx *s;
printf("%d",s->x);
printf("%s",s->name);
}
Answer:
Compiler Error
Explanation: You should not initialize variables in
declaration
18. #include<stdio.h>
main()
{
struct xx
{
int x;
struct yy
{
char s;
struct xx *p;
};
struct yy *q;
};
}
Answer:
Compiler Error
Explanation: The structure yy is nested within
structure xx. Hence, the elements are of yy are to
be accessed through the instance of structure xx,
which needs an instance of yy to be known. If the
instance is created after defining the structure the
compiler will not know about the instance relative to
xx. Hence for nested structure yy you have to
declare member.
19. main()
{
printf(" ab");
printf("si");
printf(" ha");
}
Answer: hai
Explanation:
- newline
- backspace
- linefeed
20. main()
{
int i=5;
printf("%d%d%d%d%d%d",i++,i--,++i,--i,i);
}
Answer: 45545
Explanation: The arguments in a function call are
pushed into the stack from left to right. The
evaluation is by popping out from the stack. And the
evaluation is from right to left, hence the result.
main()
{
int i;
i = 64/square(4);
printf("%d",i);
}
Answer: 64
Explanation: the macro call square(4) will
substituted by 4*4 so the expression becomes i =
64/4*4 . Since / and * has equal priority the
expression will be evaluated as (64/4)*4 i.e. 16*4 =
64
21. main()
{
char *p="hai friends",*p1;
p1=p;
while(*p!='') ++*p++;
printf("%s %s",p,p1);
}
Answer: ibj!gsjfoet
Explanation: ++*p++ will be parse in the given
order
_ *p that is value at the location currently pointed
by p will be taken
_ ++*p the retrieved value will be incremented
_ when; is encountered the location will be
incremented that is p++ will be executed Hence, in
the while loop initial value pointed by p is ‘h’, which
is changed to ‘i’ by executing ++*p and pointer
moves to point, ‘a’ which is similarly changed to ‘b’
and so on. Similarly blank space is converted to ‘!’.
Thus, we obtain value in p becomes “ibj!gsjfoet” and
since p reaches ‘’ and p1 points to p thus p1doesnot
print anything.
#define a 10
main()
{
#define a 50
printf("%d",a);
}
Answer: 50
Explanation: The preprocessor directives can be
redefined anywhere in the program. So the most
recently assigned value will be taken.
main()
{
clrscr();
printf("%d ",clrscr());
}
Answer: 100
Explanation: Preprocessor executes as a seperate
pass before the execution of the compiler. So
textual replacement of clrscr() to 100 occurs. The
input program to compiler looks like this :
main()
{
100;
printf("%d ",100);
}
Note:
100; is an executable statement but with no action.
So it doesn't give any problem
24. main()
{
41printf("%p",main);
}8
Answer: Some address will be printed.
Explanation: Function names are just addresses
(just like array names are addresses). main() is also
a function. So the address of function main will be
printed. %p in printf specifies that the argument is
an address. They are printed as hexadecimal
numbers.
Linux Questions
When using useradd to create a new user account,
which of the following tasks is not done
automatically. Choose one:
a. Assign a UID. b. Assign a default shell. c. Create
the user’s home directory. d. Define the user’s home
directory.
You issue the following command useradd -m bobm
But the user cannot logon. What is the problem?
Choose one: a. You need to assign a password to
bobm’s account using the passwd command. b. You
need to create bobm’s home directory and set the
appropriate permissions. c. You need to edit the
/etc/passwd file and assign a shell for bobm’s
account. d. The username must be at least five
characters long.
You have created special configuration files that you
want copied to each user’s home directories when
creating new user accounts. You copy the files to
/etc/skel.
Which of the following commands will make this
happen? Choose one: a. useradd -m username b.
useradd -mk username c. useradd -k username d.
useradd -Dk username
Mary has recently gotten married and wants to
change her username from mstone to mknight.
Which of the following commands should you run to
accomplish this? Choose one: a. usermod -l mknight
mstone b. usermod -l mstone mknight c. usermod
-u mknight mstone d. usermod -u mstone mknight
After bob leaves the company you issue the
command userdel bob. Although his entry in the
/etc/passwd file has been deleted, his home
directory is still there. What command could you
have used to make sure that his home directory was
also deleted? Choose one: a. userdel -m bob b.
userdel -u bob c. userdel -l bob d. userdel -r bob
All groups are defined in the /etc/group file. Each
entry contains four fields in the following order.
Choose one: a. groupname, password, GID, member
list b. GID, groupname, password, member list c.
groupname, GID, password, member list d. GID,
member list, groupname, password
You need to create a new group called sales with
Bob, Mary and Joe as members. Which of the
following would accomplish this? Choose one: a. Add
the following line to the /etc/group file:
sales:44:bob,mary,joe b. Issue the command
groupadd sales. c. Issue the command groupadd -a
sales bob,mary,joe d. Add the following line to
the /etc/group file: sales::44:bob,mary,joe
You attempt to use shadow passwords but are
unsuccessful. What characteristic of the /etc/passwd
file may cause this? Choose one: a. The login
command is missing. b. The username is too long. c.
The password field is blank. d. The password field is
prefaced by an asterick.
You create a new user account by adding the
following line to your /etc/passwd file.
bobm:baddog:501:501:Bob
Morris:/home/bobm:/bin/bash Bob calls you and
tells you that he cannot logon. You verify that he is
using the correct username and password. What is
the problem? Choose one: a. The UID and GID
cannot be identical. b. You cannot have spaces in
the line unless they are surrounded with double
quotes. c. You cannot directly enter the password;
rather you have to use the passwd command to
assign a password to the user. d. The username is
too short, it must be at least six characters long.
Which of the following tasks is not necessary when
creating a new user by editing the /etc/passwd file?
Choose one: a. Create a link from the user’s home
directory to the shell the user will use. b. Create the
user’s home directory c. Use the passwd command
to assign a password to the account. d. Add the user
to the specified group.
You create a new user by adding the following line
to the /etc/passwd file bobm::501:501:Bob
Morris:/home/bobm:/bin/bash You then create the
user’s home directory and use the passwd command
to set his password. However, the user calls you and
says that he cannot log on. What is the problem?
Choose one: a. The user did not change his
password. b. bobm does not have permission to
/home/bobm. c. The user did not type his username
in all caps. d. You cannot leave the password field
blank when creating a new user.
2. Technical Interview
3. HR Interview
4. Essay Section
1 Written Test
Logical Deductions
2. C SECTION: 10 QUESTIONS
5. ESSAY SECTION :
Write an essay with minimum 200 words on the topic: "Is
the projection of violence on television responsible for the
prevalence of violence in our society?"
Linux and Unix System Administration
Interview Questions
Briefly, a boot loader is the first software program that runs when a
computer starts. It is
(such as the Hurd or Linux). The kernel, in turn, initializes the rest of
the operating
Have you ever wondered what happens behind the scenes from the
time you press the power button until the Linux login prompt appears?
The following are the 6 high level stages of a typical Linux boot
process.
a. BIOS
BIOS stands for Basic Input/Output System
Performs some system integrity checks
Searches, loads, and executes the boot loader program.
It looks for boot loader in floppy, cd-rom, or hard drive. You can
press a key (typically F12 of F2, but it depends on your system) during
the BIOS startup to change the boot sequence.
Once the boot loader program is detected and loaded into the
memory, BIOS gives the control to it.
So, in simple terms BIOS loads and executes the MBR boot
loader.
b. MBR
MBR stands for Master Boot Record.
It is located in the 1st sector of the bootable disk.
Typically /dev/hda, or /dev/sda
MBR is less than 512 bytes in size. This has three components
1) primary boot loader info in 1st 446 bytes 2) partition table info in
next 64 bytes 3) mbr validation check in last 2 bytes.
It contains information about GRUB (or LILO in old systems).
So, in simple terms MBR loads and executes the GRUB boot
loader.
c. GRUB
GRUB stands for Grand Unified Bootloader.
If you have multiple kernel images installed on your system,
you can choose which one to be executed.
GRUB displays a splash screen, waits for few seconds, if you
don’t enter anything, it loads the default kernel image as specified in
the grub configuration file.
GRUB has the knowledge of the filesystem (the older Linux
loader LILO didn’t understand filesystem).
Grub configuration file is /boot/grub/grub.conf
(/etc/grub.conf is a link to this). The following is sample grub.conf of
CentOS.
d. Kernel
Mounts the root file system as specified in the “root=” in
grub.conf
Kernel executes the /sbin/init program
Since init was the 1st program to be executed by Linux Kernel, it
has the process id (PID) of 1. Do a ‘ps -ef | grep init’ and check the
pid.
initrd stands for Initial RAM Disk.
initrd is used by kernel as temporary root file system until kernel
is booted and the real root file system is mounted. It also contains
necessary drivers compiled inside, which helps it to access the hard
drive partitions, and other hardware.
e. Init
Looks at the /etc/inittab file to decide the Linux run level.
Following are the available run levels
o 0 – halt
o 1 – Single user mode
o 2 – Multiuser, without NFS
o 3 – Full multiuser mode
o 4 – unused
o 5 – X11
o 6 – reboot
Init identifies the default initlevel from /etc/inittab and uses that to
load all appropriate program.
Execute ‘grep initdefault /etc/inittab’ on your system to identify
the default run level
If you want to get into trouble, you can set the default run
level to 0 or 6. Since you know what 0 and 6 means, probably you
might not do that.
Typically you would set the default run level to either 3 or 5.
f. Runlevel programs
When the Linux system is booting up, you might see various
services getting started. For example, it might say “starting sendmail
…. OK”. Those are the runlevel programs, executed from the run level
directory as defined by your run level.
Depending on your default init level setting, the system will
execute the programs from one of the following directories.
o Run level 0 – /etc/rc.d/rc0.d/
o Run level 1 – /etc/rc.d/rc1.d/
o Run level 2 – /etc/rc.d/rc2.d/
o Run level 3 – /etc/rc.d/rc3.d/
o Run level 4 – /etc/rc.d/rc4.d/
o Run level 5 – /etc/rc.d/rc5.d/
o Run level 6 – /etc/rc.d/rc6.d/
Please note that there are also symbolic links available for these
directory under /etc directly. So, /etc/rc0.d is linked to /etc/rc.d/rc0.d.
Under the /etc/rc.d/rc*.d/ directories, you would see programs
that start with S and K.
Programs starts with S are used during startup. S for startup.
Programs starts with K are used during shutdown. K for kill.
There are numbers right next to S and K in the program names.
Those are the sequence number in which the programs should be
started or killed.
For example, S12syslog is to start the syslog deamon, which has
the sequence number of 12. S80sendmail is to start the
sendmail daemon, which has the sequence number of 80. So, syslog
program will be started before sendmail.
There you have it. That is what happens during the Linux boot
process.
3) Which files are called for user profile by default when a user
gets login
$HOME/.bash_profile, $HOME/.bash_bashrc
4) Which file needs to update if srequired to change default
runlevel 5 to 3
File is /etc/inittab and required to change below lines:
id:5:initdefault: to id:3:initdefault:
5) What command used for showing user info like Login Name,
Canonical Name, Home Directory,Shell etc..
FINGER command can be used i.g; finger username
6) What is inode number
An inode is a data structure on a traditional Unix-style file system such
as UFS or ext3. An
Owner
Group
File Size
(immutability)
ls -i
Following command will show complete info about any file or folders
with inode number
stat file/folder
Files/Folders can also be deleted using inode numbers with following
command:
find out the inode number using ‘ls -il’ command then run below
command
# Before test
256
2549+1 records in
real 0m6.845s
user 0m0.004s
sys 0m0.865s
# After test
2435+1 records in
real 0m0.370s
user 0m0.001s
sys 0m0.370s
10) How many default number of Shells available and what are
their names?
SH, BASH, CSH, TCSH, NOLOGIN, KSH
11) Which file defines the attributes like UID, PASSWORD expiry,
HOME Dir create or not while adding user
/etc/login.defs
12) …… command used for changing authentication of linux
system to LDAP/NIS/SMB/KERBOS
authconfig
15) How can we change speed and make full duplex settings for
eth0
We can do this with below given 2 methods:
OR
mii-tool -F 100baseTx-HD
mii-tool -F 10baseT-HD
17) Main configuration file and command used for exporting NFS
directories and it’s deamons
/etc/exports and exportfs -av , deamons are quotad, portmapper,
mountd, nfsd and nlockmgr/status
18) What is command to check ports running/used over local
machine
netstat -antp
Hard Links => 1) Hard links will have the same inode number as
source file
22) Restricting insertion into file if full permission are assigned to all
chattr +i filename
25) How can we have daily system analysis and reports over mail
Use logwatch
every minute)
user )
Anacron :
minute
or
http://www.thegeekstuff.com/2012/01/linux-unix-kernel/
Examples: – USB disk, CDROM, Hard Disk (sda, sdb, sdc etc….)
modprobe mod_name
For adding this myswap at boot time, add following in /etc/fstab file:
/opt/myswap swap swap defaults 0 0
Deleting Swap :
Script : creates a file and store all the terminal output to this file
Q) Q) What is LILO?
Answer - LILO is Linux Loader is a boot loader for Linux. It is used
to load Linux into the memory and start the Operating system.......
Q) What is LD_LIBRARY_PATH?
Answer - Email can be sent in Linux using the mail command. ......
Answer - Bash is a free shell for UNIX. It is the default shell for
most UNIX systems. It has a combination of the C and Korn shell
features. ......
Answer - Zombie is a process state when the child dies before the
parent process. In this case the structural information of the
process is still in the process table.......
dmesg [options]
Invoking dmesg without any of its options causes it to write all the
kernel messages to standard output. This usually produces far too
many lines to fit into the display screen all at once, and thus only
the final messages are visible. However, the output can be
redirected to the less command through the use of a pipe, thereby
allowing the startup messages to be viewed on one screen at a
time
dmesg | less
Q) What are the partitions created on the mail server hard drive?
The main partitions are done firstly which are root, swap and boot
partition. But for the mail server three different partitions are also
done which are as follows:
1. /var/spool- This is done so that if something goes wrong with
the mail server or spool than the output cannot overrun the file
system.
2. /tmp- putting this on its own partition prevents any user item or
software from overrunning the system files.
3. /home- putting this on its own is useful for system upgrades or
reinstalls. It allow not to wipe off the /home hierarchy along with
other areas.
It contains all the information of the users who log into the system.
It contains a list of the system's accounts, giving for each account
some useful information like user ID, group ID, home directory,
shell, etc. It should have general read permission as many
utilities, like ls use it to map user IDs to user names, but write
access only for the superuser (root). The main fields of
/etc/passwd file are:
1. Username: It is used when user logs in. It should be between 1
and 32 characters in length.
2. Password: An x character indicates that encrypted password is
stored in /etc/shadow file.
3. User ID (UID): Each user must be assigned a user ID (UID).
UID 0 (zero) is reserved for root and UIDs 1-99 are reserved for
other predefined accounts. Further UID 100-999 are reserved by
system for administrative and system accounts/groups.
4. Group ID (GID): The primary group ID (stored in /etc/group file)
5. User ID Info: The comment field. It allow you to add extra
information about the users such as user's full name, phone
number etc. This field use by finger command.
6. Home directory: The absolute path to the directory the user will
be in when they log in. If this directory does not exists then users
directory becomes /
7. Command/shell: The absolute path of a command or shell
(/bin/bash). Typically, this is a shell.
Which commands are used to set a processor-intensive job to use
less CPU time?
Options
-l List - display the current crontab entries.
Update V1.1.