Search This Blog

Saturday, April 23, 2011

SAS Interview Questions

from http://www.sconsig.com/

Very Basic
What SAS statements would you code to read an external raw data file to a DATA
step?
How do you read in the variables that you need?
Are you familiar with special input delimiters? How are they used?
If reading a variable length file with fixed input, how would you prevent SAS
from reading the next record if the last variable didn't have a value?
What is the difference between an informat and a format? Name three informats
or formats.
Name and describe three SAS functions that you have used, if any?
How would you code the criteria to restrict the output to be produced?
What is the purpose of the trailing @? The @@? How would you use them?
Under what circumstances would you code a SELECT construct instead of IF
statements?
What statement do you code to tell SAS that it is to write to an external
file? What statement do you code to write the record to the file?
If reading an external file to produce an external file, what is the shortcut
to write that record without coding every single variable on the record?
If you're not wanting any SAS output from a data step, how would you code the
data statement to prevent SAS from producing a set?
What is the one statement to set the criteria of data that can be coded in any
step?
Have you ever linked SAS code? If so, describe the link and any required
statements used to either process the code or the step itself.
How would you include common or reuse code to be processed along with your
statements?
When looking for data contained in a character string of 150 bytes, which
function is the best to locate that data: scan, index, or indexc?
If you have a data set that contains 100 variables, but you need only five of
those, what is the code to force SAS to use only those variable?
Code a PROC SORT on a data set containing State, District and County as the
primary variables, along with several numeric variables.
How would you delete duplicate observations?
How would you delete observations with duplicate keys?
How would you code a merge that will keep only the observations that have
matches from both sets.
How would you code a merge that will write the matches of both to one data
set, the non-matches from the left-most data set to a second data set, and the
non-matches of the right-most data set to a third data set.

Internals
What is the Program Data Vector (PDV)? What are its functions?
Does SAS 'Translate' (compile) or does it 'Interpret'? Explain.
At compile time when a SAS data set is read, what items are created?
Name statements that are recognized at compile time only?
Identify statements whose placement in the DATA step is critical.
Name statements that function at both compile and execution time.
Name statements that are execution only.
In the flow of DATA step processing, what is the first action in a typical
DATA Step?
What is _n_?

Base SAS
What is the effect of the OPTIONS statement ERRORS=1?
What's the difference between VAR A1 - A4 and VAR A1 -- A4?
What do the SAS log messages "numeric values have been converted to character"
mean? What are the implications?
Why is a STOP statement needed for the POINT= option on a SET statement?
How do you control the number of observations and/or variables read or
written?
Approximately what date is represented by the SAS date value of 730?
How would you remove a format that has been permanently associated with a
variable??
What does the RUN statement do?
Why is SAS considered self-documenting?
What areas of SAS are you most interested in?
Briefly describe 5 ways to do a "table lookup" in SAS.
What versions of SAS have you used (on which platforms)?
What are some good SAS programming practices for processing very large data
sets?
What are some problems you might encounter in processing missing values? *In
Data steps? Arithmetic? Comparisons? Functions? Classifying data?
How would you create a data set with 1 observation and 30 variables from a
data set with 30 observations and 1 variable?
What is the different between functions and PROCs that calculate the same
simple descriptive statistics?
If you were told to create many records from one record, show how you would do
this using arrays and with PROC TRANSPOSE?
What are _numeric_ and _character_ and what do they do?
How would you create multiple observations from a single observation?
For what purpose would you use the RETAIN statement?
What is a method for assigning first.VAR and last.VAR to the BY group variable
on unsorted data?
What is the order of application for output data set options, input data set
options and SAS statements?
What is the order of evaluation of the comparison operators: + - * / ** ( ) ?

Testing, debugging
How could you generate test data with no input data?
How do you debug and test your SAS programs?
What can you learn from the SAS log when debugging?
What is the purpose of _error_?
How can you put a "trace" in your program?
Are you sensitive to code walk-throughs, peer review, or QC review?
Have you ever used the SAS Debugger?
What other SAS features do you use for error trapping and data validation?

Missing values
How does SAS handle missing values in: assignment statements, functions, a
merge, an update, sort order, formats, PROCs?
How many missing values are available? When might you use them?
How do you test for missing values?
How are numeric and character missing values represented internally?

General
What has been your most common programming mistake?
What is your favorite programming language and why?
What is your favorite operating system? Why?
Do you observe any coding standards? What is your opinion of them?
What percent of your program code is usually original and what percent copied
and modified?
Have you ever had to follow SOPs or programming guidelines?
Which is worse: not testing your programs or not commenting your programs?
Name several ways to achieve efficiency in your program. Explain trade-offs.
What other SAS products have you used and consider yourself proficient in
using?

Functions
How do you make use of functions?
When looking for contained in a character string of 150 bytes, which function
is the best to locate that data: scan, index, or indexc?
What is the significance of the 'OF' in X=SUM(OF a1-a4, a6, a9);?
What do the PUT and INPUT functions do?
Which date function advances a date, time or date/time value by a given
interval?
What do the MOD and INT function do?
How might you use MOD and INT on numerics to mimic SUBSTR on character
strings?
In ARRAY processing, what does the DIM function do?
How would you determine the number of missing or nonmissing values in
computations?
What is the difference between: x=a+b+c+d; and x=SUM(a,b,c,d);?
There is a field containing a date. It needs to be displayed in the format
"ddmonyy" if it's before 1975, "dd mon ccyy" if it's after 1985, and as 'Disco
Years' if it's between 1975 and 1985. How would you accomplish this in data
step code? Using only PROC FORMAT.
In the following DATA step, what is needed for 'fraction' to print to the log?
data _null_; x=1/3; if x=.3333 then put 'fraction'; run;
What is the difference between calculating the 'mean' using the mean function
and PROC MEANS?

PROCs
Have you ever used "Proc Merge"? (be prepared for surprising answers..)
If you were given several SAS data sets you were unfamiliar with, how would
you find out the variable names and formats of each dataset?
What SAS PROCs have you used and consider yourself proficient in using?
How would you keep SAS from overlaying the a SAS set with its sorted version?
In PROC PRINT, can you print only variables that begin with the letter "A"?
What are some differences between PROC SUMMARY and PROC MEANS?
PROC FREQ:
*Code the tables statement for a single-level (most common) frequency.
*Code the tables statement to produce a multi-level frequency.
*Name the option to produce a frequency line items rather that a table.
*Produce output from a frequency. Restrict the printing of the table.


PROC MEANS:
*Code a PROC MEANS that shows both summed and averaged output of the data.
*Code the option that will allow MEANS to include missing numeric data to be
included in the report.
*Code the MEANS to produce output to be used later.

Do you use PROC REPORT or PROC TABULATE? Which do you prefer? Explain.

Merging/Updating
What happens in a one-on-one merge? When would you use one?
How would you combine 3 or more tables with different structures?
What is a problem with merging two data sets that have variables with the same
name but different data?
When would you choose to MERGE two data sets together and when would you SET
two data sets?
Which data set is the controlling data set in the MERGE statement?
How do the IN= variables improve the capability of a MERGE?
Explain the message 'MERGE HAS ONE OR MORE DATASETS WITH REPEATS OF BY
VARIABLES".

Simple statistics
How would you generate 1000 observations from a normal distribution with a
mean of 50 and standard deviation of 20. How would you use PROC CHART to look
at the distribution? Describe the shape of the distribution.
How do you generate random samples?

Customized Report Writing
What is the purpose of the statement DATA _NULL_ ;?
What is the pound sign used for in the DATA _NULL_?
What would you use the trailing @ sign for?
For what purpose(s) would you use the RETURN statement?
How would you determine how far down on a page you have printed in order to
print out footnotes?
What is the purpose of using the N=PS option?

Macro
What system options would you use to help debug a macro?
Describe how you would create a macro variable.
How do you identify a macro variable?
How do you define the end of a macro?
How do you assign a macro variable to a SAS variable?
For what purposes have you used SAS macros?
What is the difference between %LOCAL and %GLOBAL?
How long can a macro variable be? A token?
If you use a SYMPUT in a DATA step, when and where can you use the macro
variable?
What do you code to create a macro? End one?
Describe how you would pass data to a macro.
You have five data sets that need to be processed identically; how would you
simplify that processing with a macro?
How would you code a macro statement to produce information on the SAS log?
This statement can be coded anywhere.
How do you add a number to a macro variable?
If you need the value of a variable rather than the variable itself, what
would you use to load the value to a macro variable?
Can you execute a macro within a macro? Describe.
Can you a macro within another macro? If so, how would SAS know where the
current macro ended and the new one began?
How are parameters passed to a macro?

Pharmaceutical Industry
Describe the types of SAS programming tasks that you performed: Tables?
Listings? Graphics? Ad hoc reports? Other?
Have you been involved in editing the data or writing data queries?
What techniques and/or PROCs do you use for tables?
Do you prefer PROC REPORT or PROC TABULATE? Why?
Are you involved in writing the inferential analysis plan? Tables
specifications?
What do you feel about hardcoding?
How experienced are you with customized reporting and use of DATA _NULL_
features?
How do you write a test plan?
What is the difference between verification and validation?

Intangibles
What was the last computer book you purchased? Why?
What is your favorite all time computer book? Why?
For contractors:
*Will it bother you if the guy at the next desk times the frequency and
duration of your bathroom/coffee breaks on the grounds that 'you are getting
paid twice as much as he is'?

*How will you react when, while consulting a SAS documentation manual to get
an answer to a problem, someone says: 'hey, I thought you were supposed to
know all that stuff already, and not have to look it up in a book!'


*Can you continue to write code while the rest of the people on the floor
where you work have a noisy party to which you were not invited?
R

No comments: