473,385 Members | 1,357 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,385 software developers and data experts.

testing c skills

Hi guys,

I want to have your opinion on how a candidate should be judged for
his programming
skills in C ? Should he be checked for his programming basics or should
he be asked to
write a program for some problem (like sorting or searching ) ?

Apr 17 '06 #1
7 2694
ed
On 16 Apr 2006 22:42:50 -0700
"ju**********@yahoo.co.in" <ju**********@yahoo.co.in> wrote:
I want to have your opinion on how a candidate should be judged
for
his programming
skills in C ? Should he be checked for his programming basics or
should he be asked to
write a program for some problem (like sorting or searching ) ?


The candidate should be judged on overall ability with other languages
too, I think it shows a strong candidate when he can write in multiple
languages, if this is for the purposes of employment you should consider
if the candidate is aware when C should be used, and when there are
other languages which might fit the purpose better.

If for the purpose of employment you should bias your tests strongly
against the line of jobs that you think the candidate will be
performing, for example if they were to write you a custom email server
you should probably test their ability with general email RFC's, things
such as mime encoding and headers would be of vital importance (along
with many other aspects of safe design).

You might also (if interviewing a very large section of people) take a
look at online tests by people like brainbench.com to see what their
people think are important in the C language.

Or just take a look at the FAQ for some examples of questions.

--
Regards, Ed :: http://www.s5h.net
:%s/\t/ /g :: proud unix system person
:%s/Open Source/Free Software/g
Apr 17 '06 #2
ju**********@yahoo.co.in said:
Hi guys,

I want to have your opinion on how a candidate should be judged for
his programming
skills in C ?


Here's one possible strategy:

Start by getting the candidates to write a correct, robust "hello, world" C
program. Most people simply can't do this in a correct and robust manner.
In fact, you can probably eliminate a good (or bad!) 75% of candidates at
this stage.

Once you've done that, ask the remainder to write a program that adds two
arbitrary integers (i.e. integers of any length) supplied as argv[1] and
argv[2], again in a correct and robust manner. For example, the command
line might be:

../add 739346584673839376487584638389 582473839893783736446474874162

Eliminate any candidates whose programs supply incorrect results.

(For the above example, 1321820424567623112934059512551 is the expected
result.)

Then eliminate any candidates whose programs don't handle incorrect input
(at least one argument is either not present or not an integer).

Then look through the programs and decide which candidate's code is the most
readable and robust.

--
Richard Heathfield
"Usenet is a strange place" - dmr 29/7/1999
http://www.cpax.org.uk
email: rjh at above domain (but drop the www, obviously)
Apr 17 '06 #3
Richard Heathfield <in*****@invalid.invalid> writes:
[...]
Once you've done that, ask the remainder to write a program that adds two
arbitrary integers (i.e. integers of any length) supplied as argv[1] and
argv[2], again in a correct and robust manner. For example, the command
line might be:

./add 739346584673839376487584638389 582473839893783736446474874162

Eliminate any candidates whose programs supply incorrect results.

[...]

Extra points for candidates who ask for clarification on the
requirements. For example, are leading "+" and "-" signs allowed?
Does a leading "0x" or "0X" denote hexadecimal, or is it an error?
Does a leading "0" denote octal or decimal? How should the program
respond to invalid inputs?

Finally, how portable does the program have to be? The simplest way
to do this is probably to use system() to invoke "bc". Next best is
to use GMP (download and install it if it's not already on the
system).

If the solution has to be self-contained portable C, I probably
wouldn't ask someone to solve this during an interview; it's likely to
take too much time that could have been spent talking to the
candidate.

--
Keith Thompson (The_Other_Keith) ks***@mib.org <http://www.ghoti.net/~kst>
San Diego Supercomputer Center <*> <http://users.sdsc.edu/~kst>
We must do something. This is something. Therefore, we must do this.
Apr 17 '06 #4
Keith Thompson wrote:
Richard Heathfield <in*****@invalid.invalid> writes:
[...]
Once you've done that, ask the remainder to write a program that adds two
arbitrary integers (i.e. integers of any length) supplied as argv[1] and
argv[2], again in a correct and robust manner. For example, the command
line might be:

./add 739346584673839376487584638389 582473839893783736446474874162

Eliminate any candidates whose programs supply incorrect results.

[...]

Extra points for candidates who ask for clarification on the
requirements. For example, are leading "+" and "-" signs allowed?
Does a leading "0x" or "0X" denote hexadecimal, or is it an error?
Does a leading "0" denote octal or decimal? How should the program
respond to invalid inputs?

Finally, how portable does the program have to be? The simplest way
to do this is probably to use system() to invoke "bc". Next best is
to use GMP (download and install it if it's not already on the
system).

If the solution has to be self-contained portable C, I probably
wouldn't ask someone to solve this during an interview; it's likely to
take too much time that could have been spent talking to the
candidate.


I don't think it is tremendously difficult or long. Strip any leading
spaces, check the first character (possibly the second as well to detect
0x), allocate space (remembering the result could be one character
longer than the longest number) then work from the other end of the
strings adding a digit at a time.

Personally, if interviewing, I would be more likely to ask how to solve
certain types of problem, what gotcha's to look out for and about things
they have done in the past.
--
Flash Gordon, living in interesting times.
Web site - http://home.flash-gordon.me.uk/
comp.lang.c posting guidelines and intro:
http://clc-wiki.net/wiki/Intro_to_clc
Apr 17 '06 #5

<ju**********@yahoo.co.in> wrote in message
news:11**********************@g10g2000cwb.googlegr oups.com...
Hi guys,

I want to have your opinion on how a candidate should be judged for
his programming
skills in C ? Should he be checked for his programming basics or should
he be asked to
write a program for some problem (like sorting or searching ) ?


The problem with all testing methodologies is that people have weaknesses in
different areas. When you develop a test, you "discriminate," intentionally
or not, against certain skills and types of intellect. If you test for
intricate knowledge of simple language details, as Heathfield and Thompson
suggested, you may end up with a programmer whose code is correct, but who
struggles to solve bigger problems. If you test for problem solving
ability, you may end up with a programmer who can solve problems elegantly,
but who struggles to implement the code correctly. The programmer may be
strong in one or more of string processing, or databases, or numerical
computation, or DSP algorithms, microcontrollers, but at the same time be
weak in the other areas.

You need to define what your business needs are for that person. What areas
of coding is your business involved in? If you're in finance, do you want
someone who is strong in string processing or databases? You'd probably
want someone strong with numerical computations...
Rod Pemberton


Apr 17 '06 #6
ju**********@yahoo.co.in wrote:
Hi guys,

I want to have your opinion on how a candidate should be judged for
his programming
skills in C ? Should he be checked for his programming basics or should
he be asked to
write a program for some problem (like sorting or searching ) ?

I tend to probe the candidate on a recent project to try to get a feel
for their ability to describe the problem and their solution.

I used to pose programming questions, but after suffering some realy
stupid ones myself I prefer to trust my judgement based on past work.
Once I have a feel for the candidate's perceived strengths and
weaknesses, I'd have one of my team pair with them for and hour to see
how they work on real world problems and more importantly, how well they
fit in with the team.

--
Ian Collins.
Apr 17 '06 #7
Richard Heathfield wrote:
ju**********@yahoo.co.in said:

I want to have your opinion on how a candidate should be judged
for his programming skills in C ?


Here's one possible strategy:

Start by getting the candidates to write a correct, robust "hello,
world" C program. Most people simply can't do this in a correct
and robust manner. In fact, you can probably eliminate a good (or
bad!) 75% of candidates at this stage.

Once you've done that, ask the remainder to write a program that
adds two arbitrary integers (i.e. integers of any length) supplied
as argv[1] and argv[2], again in a correct and robust manner. For
example, the command line might be:

./add 739346584673839376487584638389 582473839893783736446474874162

Eliminate any candidates whose programs supply incorrect results.

(For the above example, 1321820424567623112934059512551 is the
expected result.)

Then eliminate any candidates whose programs don't handle incorrect
input (at least one argument is either not present or not an integer).

Then look through the programs and decide which candidate's code is
the most readable and robust.


Then make it harder and require that they do the job without
additional storage apart from a few char variables, and possible
recursion effects. :-)

--
"If you want to post a followup via groups.google.com, don't use
the broken "Reply" link at the bottom of the article. Click on
"show options" at the top of the article, then click on the
"Reply" at the bottom of the article headers." - Keith Thompson
More details at: <http://cfaj.freeshell.org/google/>
Also see <http://www.safalra.com/special/googlegroupsreply/>
Apr 17 '06 #8

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

4
by: Hugh Cowan | last post by:
Hello, I don't program full-time (anymore), but I do try and stay on-top of the latest technologies and like most are always trying to upgrade my skills and remain current (as much as is...
0
by: DosLaredos | last post by:
US-VA: Sr.Oracle ATS/Testing LoadRunner QuickTest Pro # 1129R1 Start Date: ASAP Duration: 1 Month++ Rate: $50-$60 DOE Expenses: PAID
1
by: sush | last post by:
SKILLS : Skills desired: STORAGE / SAN TESTING AND VALIDATION Work Experience: 2 - 9 YEARS JOB TITLE: Systems Engineer
6
by: praveen | last post by:
Hi, I am writing c code for ATMEL 8051 core in ANSI c. we are using KEIL compiler for it. I want to test my c code and improve my programming skills. Can any one suggest the software tool that...
1
by: ronmauldin | last post by:
Anyone with experience in testing programmers prior to hiring them? I resell the skills of programmers (Web Design/Flash/PHP/MySQL/Javascript) around the world to work virtually for companies in...
2
by: gamesforums | last post by:
Hi! I've been programming in VB.Net and done testing with TypeMock and MbUnit (Testdriven.net) for about 2months now at work. I can see that my testing skills and particular my knowledge about...
0
by: Giri | last post by:
We also have PE, SSE, SSE QA, SE QA, SSE-SCM positions *Please send the resume to girish_mc@intuit.com* 1) PE - Minimum 9 years experience - Must have extensive...
1
by: CloudSolutions | last post by:
Introduction: For many beginners and individual users, requiring a credit card and email registration may pose a barrier when starting to use cloud servers. However, some cloud server providers now...
0
by: Faith0G | last post by:
I am starting a new it consulting business and it's been a while since I setup a new website. Is wordpress still the best web based software for hosting a 5 page website? The webpages will be...
0
isladogs
by: isladogs | last post by:
The next Access Europe User Group meeting will be on Wednesday 3 Apr 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM). In this session, we are pleased to welcome former...
0
by: Charles Arthur | last post by:
How do i turn on java script on a villaon, callus and itel keypad mobile phone
0
by: ryjfgjl | last post by:
In our work, we often receive Excel tables with data in the same format. If we want to analyze these data, it can be difficult to analyze them because the data is spread across multiple Excel files...
0
by: emmanuelkatto | last post by:
Hi All, I am Emmanuel katto from Uganda. I want to ask what challenges you've faced while migrating a website to cloud. Please let me know. Thanks! Emmanuel
0
BarryA
by: BarryA | last post by:
What are the essential steps and strategies outlined in the Data Structures and Algorithms (DSA) roadmap for aspiring data scientists? How can individuals effectively utilize this roadmap to progress...
1
by: Sonnysonu | last post by:
This is the data of csv file 1 2 3 1 2 3 1 2 3 1 2 3 2 3 2 3 3 the lengths should be different i have to store the data by column-wise with in the specific length. suppose the i have to...
0
by: Hystou | last post by:
There are some requirements for setting up RAID: 1. The motherboard and BIOS support RAID configuration. 2. The motherboard has 2 or more available SATA protocol SSD/HDD slots (including MSATA, M.2...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.