Elance System Programming Test Answers 2015

Where would you expect to encounter the following code? for (i=1; i<argc; i++) { if (argv[i][0] == '-') {
Anywhere at all
In the beginning of the main() function
In the scanning for an internals function
In the iteration of the fscanf() function

Which of the following could the fork() command return to the child process?

If a function is a 'blocking function' then:
The function must terminate before control returns to caller
This function has the highest possible priority
This function's purpose is to block unstructured calls
The function is written using block structuring

Any code that calls a function whose interface includes the line raises(aLibrary:BookIsMissing); should do which one?
Implement an exception handler
#include errno.h header file
Pass both parameters by reference
Properly pass parameter for Book

In UNIX, a program requires higher privileges in order to do which of the following?
Create a file in the /tmp directory
Listen on a port below 1024
Open a file in the owner’s directory
exec() a new process

Which of the following is correct for the standard file descriptors that are automatically opened in UNIX?

Which of the following is true of hard links?
Files are deleted from disk when a hard link is removed
Hard links are directory entries that point to the same inode as another file
Hard links can cross filesystems

When a new process is created using fork(), which of the following describes the state of open file descriptors?
The child inherits the parent’s
The child always has an empty set of closed descriptors
The child overwrites the parent’s
The child has distinct copies of the parent’s

Which of the following methods is used by system programs to access a character device (such as keyboards, audio cards, etc) on a UNIX system?
It depends on the device
Standard file access functions

Which of the following fields in the stat struct contain last time the file was modified?

What is thread safety?
Threads don’t start until all of the resources they require are available
Threads can only access the data in its process
Multiple threads can be executed without corrupting shared data

Given the following line: my_fd = open(filename, O_WRONLY | O_CREAT | O_TRUNC | O_APPEND, 0644); Which statement is true?
Runtime error opening the file as the various flags and modes are in conflict
Syntax error; the function takes only one more argument after 'filename'
Syntax error; the second argument should be a single integer type
Opens a file descriptor, bitwise OR'ing output flags and in mode 644

Threads and processes are related in which one of the following ways?
Each process exists within a thread
Threads and processes exist separately
Each thread exists within a process

An orphan process occurs as a result of which of the following conditions?
Parent process terminates before its child process
Child process terminates before its parent process
Parent and child process terminate simultaneously

Which one of the following is NOT applicable in real-time Systems Programming?
Sequence Diagram
E-R Schema
Event Trace
Timing Diagram

You want the same codebase to conditionally compile on and for different target platforms. Which of the following would you use?
Bit flags and bitwise OR'ing
#itdef, #ifndef, and #endif
if, else if, and else blocks
Use host-specific linkers

Race conditions are caused by which of the following conditions in a multithreaded system?
Proper program function requires all threads to run quickly
Proper program function is dependent on the execution sequence and timing of each thread
Proper program function requires that all threads run at the same speed

Using strncpy() to copy strings can help prevent which of the following attacks?
Buffer overflow
Password cracking
Denial of service

The language of choice for Systems Programming is:
None of these

You see the line: listen (s, 3); You are looking at code for:
A server's socket
A client's server
A server's clients
A client's socket

You want to listen on a port for some user-defined data stream. Would you use port 80?
Yes, it is best ot use low numbers for port numbers.
Yes, it is as good as any other port number.
No, it is best to use three or four digit port numbers.
No, it is a 'well-defined' or reserved port.

Some programme that streams data to a hard-disk file in a loop crashed before it closed the FILE pointer. When the output file is inspected side-by-side with the logs, it is clear that the fprintf() function previous to the crash was unsuccessful. Such a situation can be averted using which one of the following?

Using a terminal you want to log in to an account on a remote computer and securely build. Which would you use?

When communicating across sockets, which of the following functions must be used when the socket is in a connected state?

The purpose of the poll() and select() system calls is to perform which of the following functions?
Watch a set of file descriptors to see which are ready
Frequently check email and other network services
Sample system process information for use by the top command

If you see: int ff; write(ff, data, sizeof(data)); you know that ff is:
a file descriptor
a file function
a file pointer
a file struct

Is it good programming that the following function call is recursive? void func(unsigned long a) { unsigned long x; struct t_struct[] *p; : p = (struct t_struct *)alloca(a*sizeof(t_struct)); : While (x = f2()) func(x); : return; }
No, because there is more than one 'long integer' type
Yes, because recursion is always preferable to iteration
No, because iteration is always preferable to recursion
No, because both stack depth and stack-frame size are unpredictable

The sticky bit is used to enable which of the following features?
Aggressive caching of a process
Keep a process from swapping out of memory
Prevent users from renaming or deleting files created by other users

Which of the following provides the most random seed source for a pseudo random number generator?
C rand() function

What does the following line do? memset((char *)&ctl_addr, 0, sizeof(ctl_addr));
Given that 0 is passed, it unsets the memory of ctl_addr
Initializes a subset of memory pointed to by &ctl_addr
Initializes the region of memory pointed to by &ctl_addr
Allocates and initializes memory for variable ctl_addr

Correct the following code: 10 int my_sock; : 20 my_sock = socket(anaddr.sin_family, SOCK_STREAM, 0); 21 if (my_sock >= 0) { /* error processing */ : }
line 20: my_sock = socket(SOCK_STREAM, anaddr.sin_family, 0);
line 20: my_sock = (int *)socket(anaddr.sin_family, SOCK_STREAM, 0);
line 10: SOCKET * my_sock;
line 21: if (my_sock < 0) {

Which of the following IPC mechanisms has an inode?
unnamed pipe
shared memory
named pipe

The ioctl() function is used to interact with which of the following?
Disk Drives
Virtual TTY lines
Special character devices

Which of the following is an advantage of using pipes over shared memory for interprocess communication?
Pipes connect processes on multiple machines
Pipes can be shared by more processes
No additional work required on multiple CPU systems without cache coherence
Faster access time

Thread joining synchronizes threads by doing which of the following?
The joined threads are added to a queue and executed serially
The thread that calls join blocks until all of the joinable threads complete
The system manages the shared resources for the joined threads

Which of the following best describes the purpose of the unlink() call?
Moves the file in from one directory to another
Sets the file’s inode count to one (1)
Removes the file from its directory

Using two resident processes on a PC and a Unix box, you are streaming unbuffered the contents of a text-file byte by byte from the PC to the Unix box where it is written byte by byte to the local hard disk. Eyeing the written file it is obvious that it is not quite right. You have likely run into which problem?
Text file versus binary file
Ignoring the parity bit
Not using buffered streaming
Big endian versus littlen endian

What does the following function return? Class retVal = [self class]; if ([retVal class] != [NSObject class]) { while ([retVal superclass] != [NSObject class]) retVal = [retVal superclass]; } return retVal;
The present object's superclass or base class
The present object's ultimate superclass or base class below the root object
The root object
The present object's class

The following code is written to be accessed by multiple detached threads. : const char * c; char * d; : /* no lock and no mutex is used in any way here */ my_print_func (c, &d); : Which one of the following will happen when this code is re-entered by multiple threads?
One thread will run while others will crash or abort
It isn't possible to tell without looking at my_print_func()
The code will sometimes run and sometimes cause a crash
The code will always cause a crash

When there are more fork() calls than wait() calls, which of the following is created?

What does the line #define S_IRWXG 0000070 relate to?
Alpha-numeric interchange
Defining bitwise flags
User-defined typing
Flags for file access

You want a char * that will contain the timestamp as YYYYMMDD-hh:mm:ss . You would use:

Given: int s, l; struct sockaddr_un sock_struct; Choose the option that corrects the following line: bind(s, sock_struct, l);
bind(s, sizeof(sock_struct), l);
bind(sock_struct, s, l);
bind(s, l, sock_struct);
bind(s, &sock_struct, l);

What type of attack can be mitigated by using ulimit, setrlimit(), and quotactrl()?
Buffer Overflow
Password cracking
Denial of service

Which of the following can be called to remove zombie processes?

Thrashing caused by loading a large file can be reduced by mapping the file to memory due to which of the following features?
Mapped memory is cached
Mapped memory uses prefetching
Mapped memory uses lazy loading

In Multi-Threaded programming you want an active thread to push itself back in the background in favour of some other thread. You will use which function:

What is a UNIX directory?
A special type of inode
A file that contains other files
A list of files

Which of the following is the result of a process calling UNIX exec()?
The process is completely overwritten
A new process is created
The process blocks waiting for another process to run
The process becomes executable

In an IDL which one of the following is NOT a valid declaration?

In order to prevent signal handler race conditions, a developer must do which of the following?
Call sigaction() to block the signal and set the signal mask at the same time
Call sigsetmask() to set the signal mask to be blocked
Create a mutex within the handler to protect shared resources

CORBA's DII allows a client to do which one of the following?
Discover new objects and interfaces at runtime
Connect with proxy objects across platforms
Dynamically link with cross-platform libs
Generate client-side stubs for interfaces

In a Publish-And-Subscribe implementation, a subscriber must:
Know the event name or event identifier for one or more events
Use two-way messaging
(all of these)
Be connected to one or more event publishers

A thread has its own copy of which of th following?
Address space

Which is true, given the following code: tok = strtok_r(data, " ”, &last); while (tok) { strcat(strcpy(full_name, the_path), tok); make_secondary(eAma_full_name, TRUE); tok = strtok_r(NULL, " ”, &last); }
Should not pass last by reference inside the while() loop
Re-entrantly tokenizes on delimiter " ” to stringify something
The syntax is wrong; it should be strtok(char *, const char *)
Passing NULL as the first param to strtok_r() is an error

A 'crashed' software needs to be debugged using its core dump. You would start by doing:

What will happen when the compiler 'sees' the following code? #define FTP_TYPE "" #ifdef -FTP #define FTP_TYPE "FTP" #elif #ifdef -PASV #ifndef FTP_TYPE #define FTP_TYPE "PASV" #endif #endif
Compile will proceed with a warning of #define'ing a symbol as a string
It's not a question of 'when' but if: compiler will 'see' it only if -FTP or -PASV is set
Compile will fail with an error of #define'ing a symbol as a string
It is neither 'code' nor will the compiler 'see' it

Which one is not a difference between exit() and _exit()?
One is for the main process; the other for forked processes
One does some work on its own, then calls the other
One flushes and closes I/O streams; the other doesn't
One is a true system call; the other is a library routine

The result of calling kill(6003, 0) is which of the following?
Process 6003 terminates
The signal 0 is sent to process 6003
The existence of process 6003 is checked
The signal 6003 is sent to process 0

Which of the following techniques can help keep system programs secure?
Limit system calls to administrators
Check all system calls for error conditions
Setuid important processes to the root user
Encrypt every process’ executable

What is the purpose of a semaphore?
To protect a shared memory region
To protect shared variables
To protect a critical section of code

Which of the following advocates the use of memmove() over memcopy() for performing fast data copying from one buffer to another correctly?
The buffers will not overlap
The buffers may overlap
The buffers are large
The buffers are small

Wha does the following line do? unsigned transOK : 1;
It sets the transOK flag to 1
Declares an unsigned integer and sets it to 1
Identifies a bit in a byte to use as a flag
Conducts a bitwise operation on transOK and 1

You want to copy binary contents of memory from one location to another. Which one of these h-files will you #include?

You are coding a multi-threaded server in which n detached threads will listen on n ports with a permanent one-to-one association between threads and ports during the lifetime of the process. You want to uniquely identify each thread-port pair. To do so you:
can use thread-id but not port number
may use either thread-id or port number
must use both thread-id and port number
can use port number but not thread-id

Yousee the following function call in some code: pthread_setspecific(key, value); What will this allow the coder to do?
Insert key-value pairs into a thread's dictionary
Access thread-specific data outside the thread
Use a key to identify a thread
Enable a thread to set and use data

Sharing memory between processes using mmap vs. shm_open has which of the following advantages?
The memory buffer is destroyed when the processes end
The memory buffer is persistent beyond the life of the processes
The memory buffer automatically expands to meet the needs of the processes
The memory buffer more quickly accessed

Calling mmap(0, 4096, PROT_READ | PROT_WRITE, MAP_SHARED, input_fd, 4096), where input_fd is the file descriptor of a 16KB file will cause which of the following to occur?
The first 4KB of the file will be loaded into a 4KB memory location
The second 4KB of the file will be loaded into a 4KB memory location
The fourth 4KB of the file will be loaded into a 4KB memory location
The third 4KB of the file will be loaded into a 4KB memory location

In gdb before using 'jump' you would typically do which one of the following:
Do a backtrace
Either 'step' or 'next'
Set a breakpoint
gdb has no 'jump' instruction

Given: int s, l; struct sockaddr_un sock_struct; The following function call: connect(s, &sock_strict, l); fails. Which one is NOT a reason for it to fail?
sock_struct passed by reference
No server bound on sock_struct
Sercer not listening on sock_struct
The value of s is negative

Changing the mode of a file to be -rwxr-xr-x via the chmod system call can be achieved by setting the mode to which of the following values?

Which one of the folloing is NOT necessary for a basic CORBA system?
Naming Services
Stub and skeleton
IDL files

How can two processes communicate despite having firewalls between them?
(none of these)

Which of the following functions sends a signal to the executing process?

An Internet socket connection essentially is:
The ANSI-defined SOCK_ADDR * structure
A combination of file pointers and streams
A specific, system-defined socket structure
Two host addresses and two port numbers

Choose the answer that corrects the following code. FILE * file1; : if ((file1 = open("/valid_dir/existing_file", O_RDONLY, 0666)) == ERROR) { /* /valid_dir/existing_file is guaranteed to exist */ :
Replace the declaration with: int file1;
Use either one of 'O_RDONLY' and '0666'
Bitwise OR O_RDONLY with another flag
Do not open a file within a condition

What does this code do: [aLock lockWhenCondition:(int)self beforeDate:[NSDate dateWithTimeIntervalSinceNow:maxTimeInterval]];
A lock is locked if and when self is instantiated before a specific date-time
A lock is set using a compound condition comprising of self and a time interval
Control blocks for some time on a lock on a condition that is unique to an instance
It will have no effect at all

It is not possible to set the sticky bit of a file when creating it. Therefore it is necessary to create the directory and then set the sticky bit by executing: mkdir(“/tmp/dir”, 0744); chmod(“/tmp/dir”, 07744). Why?
The mkdir() command is privileged, and doesn’t allow any modification to permissions
The behavior of mkdir() is undefined if anything other than permission bits is set
UNIX requires that directories be created before any non-permission bits are set

In a Unix toolchain, which one of these pairs does not fit with the others?
Object file and linker
Header file and preprocessor
Executable and compiler
Quads and assembler

A pipe has been created, and fork() and exec() calls have been completed. What steps must be taken next in order to establish communication from the parent to the child?
The child must create a new pipe
The parent must close pipe_fd[0], and the child must close pipe_fd[1]
The parent must create a new pipe
The parent must close pipe_fd[1], and the child must close pipe_fd[0]

In order to create a counting mutex, which mode does it need to use?

What does this code do: BOOL sharedLockSuccess = NO; NSLock *aMutex; : sharedLockSuccess = [aMutex lockWhenCondition:1 beforeDate:[NSDate dateWithTimeIntervalSinceNow:(NSTimeInterval)3600]]; :
A mutex is tried to be locked within a specific time
A mutex is being set to be locked at a specific time
A mutex is tried to be locked with a specific condition
A mutex is being set to be locked upon a specific condition

Which of the following could the fork() command return to the parent process?

Recently your office's UNIX tool-chain was updated. Now, code that previously used to build and run still builds without any warnings or errors but displays load-time errors due to symbols not found in shlibs. You have ensured that all necessary shared libraries are present in the path 'pointed to' by the appropriate environment variable. Which is true?
Shared libraries should have been updated
Debugging info flags missing in Makefile
Outdated symbols in symbol table or link table
Compiler-Dynamic Linker incompatibility