Thursday, April 1, 2010

TRICKY QUESTIONS FOR TECH COMPANIES

Interview questions: C++, Java, networking, .NET, Microsoft, Web developer, SQA, Linux, FreeBSD, SAP ABAP, popular

Tricky C questions

  1. How do you write a program which produces its own source code as its output?
  2. How can I find the day of the week given the date?
  3. Why doesn’t C have nested functions?
  4. What is the most efficient way to count the number of bits which are set in a value?
  5. How can I convert integers to binary or hexadecimal?
  6. How can I call a function, given its name as a string?
  7. How do I access command-line arguments?
  8. How can I return multiple values from a function?
  9. How can I invoke another program from within a C program?
  10. How can I access memory located at a certain address?
  11. How can I allocate arrays or structures bigger than 64K?
  12. How can I find out how much memory is available?
  13. How can I read a directory in a C program?
  14. How can I increase the allowable number of simultaneously open files?
  15. What’s wrong with the call fopen(”c:\newdir\file.dat”, “r”)?

41 Comments so far »

  1. Manoj Kumar Bana said,

    Q. How do you write a program which produces its own source code as its output?
    Ans:
    #include
    #include

    using namespace std;
    int main()
    {
    char buf[100];
    string str;
    int size=100;
    ifstream in(”filename.cpp”,ios::in);
    while(!in.eof())
    {
    while(in.getline(buf,size))
    {
    str=buf;
    cout

  2. viral said,

    How can I return multiple values from a function?
    ans. return structure from function which can hold multiple variable

  3. viral said,

    What’s wrong with the call fopen(”c:\newdir\file.dat”, “r”)?
    Ans. as c:\\newdir\file.dat contains escape charatcer i.e. “\” which internally means to escape character following “\” hence we need to provide double back slash “\\”.

  4. Mike Mountrakis said,

    1.How do you write a program which produces its own source code as its output?
    Ans:
    Supposing that our executable has the same name with source code file
    and source code file has an exentsion of .c:

    #incude
    int main(int argc, char * argv[] )
    {
    FILE * fp,
    int c;
    char fname[100] = {”};

    if( argc day, today->month, today->year );
    mktime(today);
    DayOfWeek = today->tm_wday;
    if( DayOfWeek == 0 )
    printf(”Sunday”);
    …..
    else if ( DayOfWeek == 6 )
    printf(”Saturday”);

    3. Why doesn’t C have nested functions?
    C Compilers do not allow class types so they do not support internal function reference table like a C++ compiler does.
    Instead, you can use a structure having members function pointers. Older C++ compilers use to transform the C++ sources to C using this isomorphic transformation.

    4. What is the most efficient way to count the number of bits which are set in a value?
    Ans:
    What type of data ? What architecture (Big endian or Little endian)?
    In general:
    Use sizeof() to get the size of type.
    Use logical AND with the maximum value of the type and the given value.
    Count the maximum position in architecture’s bit order that is set to 1 in the result of the previous step.

    5. How can I convert integers to binary or hexadecimal?
    Ans:
    In order to print them use appropriate format in printf.
    In order to assign them use specifiers like
    int x = FFx; x = 101110b;
    Integers are kept in the same format inside program’s heap/stack.

    6. How can I call a function, given its name as a string?
    Ans:
    Simple way (students)

    void foo( void );
    void zoo( void );

    void caller( const char * fname )
    {

    if( strcmp(fname,”foo”) == 0 )
    foo();
    else if ( strcmp(fname,”zoo”) == 0 )
    zoo();
    else
    default;
    }
    Better Way:
    Use an XML schema that describes keywords associated with functions implemented as dynamic libraries. Use expat library to parse the elements and call functions.

    Correct Way:
    Use a lexer and compiler builder (lex,yacc) to create a set of tokens and handler functions. Good but time expensive way.

    Compile the function as a dll and call it during run time using

    7. How do I access command-line arguments?
    Ans :
    Declare your main() like:

    int main(int argc, char * argv[])
    {
    }
    argc is the number of arguments stated in the command line.
    Use argv[0] to get the program (process) name
    Use argv[1],…, to argv[argc-1] to get the command lines

    8 How can I return multiple values from a function?
    Ans:
    Return a structure that has been previously allocated. This structure holds all the values to be returned. Example follows:

    struct MyStruct * foo( struct MyStruct * in )
    {
    in->member1 = …
    ….
    in->memberN = …
    return in;
    }

    The most ordinary solution: Allow many pointers as arguments and assign values inside the body of function

    void * foo1( int * out1, char *out2 , …. , my_t * outN )
    {
    *out1 = 10;
    *out2 = ‘Y’;

    outN = …
    }

    9 How can I invoke another program from within a C program?

    Ans:
    Use in UNIX use the exec, execl, execv, execle, execve, execlp, execvp functions.

    10 How can I access memory located at a certain address
    Ans :
    Use a pointer to that address.

    11 How can I find out how much memory is available?
    Ans:
    In your user memory quota? In the system’s quota??
    try this simple program to access memory quota available for a process.

    #include
    #define KEY 1024
    main()
    {
    char *p;
    unsigned long i;

    for (i=0; ; i++ )
    {
    p = (char * )malloc( i * KEY * KEY );
    if ( p== null )
    break;
    }
    printf(”I can use %ul keys.”, i );
    }
    To check the memory available you need to access systems spcific calls like UNIX free

    12 How can I read a directory in a C program?
    Ans:
    Like the following code illustrates:

    #include “stdio.h”
    #include “dirent.h”
    #include “errno.h”
    int main()
    {
    DIR *pdir;
    struct dirent *pfile;

    if (!(pdir = opendir( “MyDirectoryPath” ) ) )
    {
    perror(”Can’t open this directory.”);
    return 1;
    }

    while( (pfile = readdir(pdir)) )
    {
    if ( 0 == strcmp(pfile->d_name,”.”) )
    continue;
    else if( 0 == strcmp(pfile->d_name,”..”) )
    continue;
    else
    printf(”File : %s\n”, pfile->d_name );
    }
    return 0;
    }

    13 How can I increase the allowable number of simultaneously open files?
    Ans:
    This is system depended. In some you cannot.

    14 What’s wrong with the call fopen(”c:\newdir\file.dat”, “r”)?
    Ans:
    Special character ‘\’ is not protected from the compiler. It sould be like:
    “c:\\newdir\\file.dat”

  5. Saleem Ansari said,

    Q)Prograon to convert an integer to binary

    char *uitob(char *s, unsigned int i)
    {
    char *cp = s;
    unsigned int bit_mask = (UINT_MAX - (UINT_MAX >> 1));
    do
    {
    *cp++ = (i & bit_mask) ? ‘1′ : ‘0′;
    } while (bit_mask >>= 1);

    *cp = ”;
    return s;

    }

    Q)Program to counte the number of bits set to 1

    int bits_set( int word )
    {
    int tmp;

    tmp = (word >> 1) & 033333333333;
    tmp = word - tmp - ((tmp >> 1) & 033333333333);
    return (((tmp + (tmp >> 3)) & 030707070707) % 077);

    }

    Q)Why no nested functions in C?

    Got the answer from USENET:
    From a syntactic point of view, there is no “real” reason why a
    structured, imperative language like C could not have nested functions.
    The characteristics of a nested function would be that it would be just
    like an ordinary function, only that it is only callable from within the
    function it is nested in, and the local variables of that function act
    as additional global variables to the nested function.
    As a University exercise, I have had to write a syntactical analyser for
    the language Mini-Pascal, which is exactly what I am talking about, a
    structured, imperative language with nested functions. I could see
    nested functions in C working like they work in Mini-Pascal.
    There is only one thing that prevents nested functions from making sense
    in C: function pointers. Suppose a function returns a pointer to one of
    its nested functions, and someone calls that nested function directly?

    Here’s an example:

    typedef void (*function)(void);
    function foo(void) {
    int local = 0;
    void bar(void) {
    local = 1;
    }
    return bar;
    }

    int main(void) {
    function baz=foo();
    baz();
    return 0;

    }

    The way I see it, execution proceeds as normal up to the “baz();” line.
    Here the function bar() nested in foo() is called, and bar() starts
    storing 1 in the address it *thinks* belongs to local in foo() - only
    oops, no one ever bothered to allocate that address. Undefined Behaviour
    Time!
    Adding safeguards to function pointers to prevent this from happening
    would add needless baggage to the C runtime system. Perhaps this is why
    K&R chose not to include nested functions?

    Q) Program that outputs its own code

    Solution1:

    #include
    int main ()
    {
    int c;
    FILE *f = fopen (__FILE__, “r”);
    if (!f) return 1;
    for (c=fgetc(f); c!=EOF; c=fgetc(f))
    putchar (c);
    fclose (f);
    return 0;

    }

    Solution2:

    #include
    main()
    {
    printf(”itself\n”);
    exit(0);

    }

    Solution3:

    main(a){a=”main(a){a=%c%s%c;printf(a,34,a,34);}”;printf(a,34,a,34);}

    Soultion4:

    #include
    main(){char*c=”\\\”#include%cmain(){char*c=%c%c%c%.102s%cn%c;printf(c+2,c[102],c[1],*c,*c,c,*c,c[1]);exit(0);}\n”;printf(c+2,c[102],c[1],*c,*c,c,*c,c[1]);exit(0);}

  6. lalitsingh said,

    above Q & ans are very interesting i have got one more Q

    Qwithout using third variable how to swap two variable
    ans
    a=a+b;
    b=a-b;
    a=a-b;
    this que was asked to me in my interview

  7. Sango said,

    >Qwithout using third variable how to swap two variable
    >ans
    >a=a+b;
    >b=a-b;
    >a=a-b;
    >this que was asked to me in my interview

    One more way,
    a = a*b
    b = a/b
    a = a/b

    -cheers,
    SB

  8. Arka Mandal said,

    may i know what is GUTTER in windows?

  9. Nabarun Sengupta said,

    Q> swap two variables without using third variable in a line?
    A> main()
    {
    int a,b;
    a=10;
    b=20;
    a^=b^=a^=b;
    printf(”%d%d”,a,b);
    }

  10. Adarsh said,

    hi 2 question to be solved
    1)print a semicolon using Cprogram without using a semicolon any where in the C code in ur program!!!!
    2) print numbers till we want without using loops or condition statements like specifically(for,do while, while swiches, if etc)!!!!!

  11. Parameshwar Hegde said,

    1.How do you write a program which produces its own source code as its output?
    Ans:
    #include
    #include

    int main()
    {
    char str[2000];
    fstream file_op(”path_of_the_file”,ios::in);
    while(!file_op.eof())
    {
    file_op.getline(str,2000);
    cout

  12. manohar said,

    print a semicolon using Cprogram without using a semicolon any where in the C code in ur program!!!!

    void main()
    {
    if(printf(”;”))
    {}
    }

    Manohar

  13. barnali basak said,

    what is the difference between #include and #include”filename”?

  14. MANV said,

    solution4:-
    …….
    int num=10; //one can have any value
    int count=0;

    while(num>0)
    {
    num=num&(num-1);
    count++;
    }
    ………

  15. shanky said,

    int i;
    size of(i)
    options:
    is it
    1.)compiler dependant
    2.)machine dependant

  16. Ravi Gupta said,

    Give a one-line C expression to test whether a number is a power of 2.
    [No loops allowed - it’s a simple test.]

  17. solidcube said,

    All the above answers to question 1 are naive. It’s a trick question and it’s designed to separate the manual labor programmers from the guys who actually know what they’re doing.

    Try doing it without filesystem calls or “cute” tricks and it enters a whole new order of complexity.

    This type of program is called a quine. It’s been described by Hofstader among others.

    Here’s an analogous problem. Try to write a sentence that enumerates exactly how many of each letter that the sentence contains.

    As in: “This sentence contains five a’s, six b’s…”

    Try it and you’ll see what I mean.

    You all fail the interview. Next applicant.

  18. D.K. said,

    Give a one-line C expression to test whether a number is a power of 2.
    bool isPower = x>0 && !(x&x-1)

  19. Inman said,

    How do you write a program which produces its own source code as its output?

    #include
    #include
    #include

    int main()
    {
    char buf[100];
    char *str;
    int size=100;
    ifstream in(__FILE__,ios::in);
    while(!in.eof())
    {
    while(in.getline(buf,size))
    {
    str=buf;
    cout

  20. Parameshwar Hegde said,

    1.How do you write a program which produces its own source code as its output?
    Ans:
    #include
    #include
    using namespace std;

    int main()
    {
    char str[500];
    fstream file_op(”c://param/filetest.cpp”,ios::in);
    while(!file_op.eof())
    {
    file_op.getline(str,2000);
    cout

  21. Ranjeet Kumar Bhatta said,

    Can anybody give me the source code in C ro reverse a
    number using only bitwise operators ???????????

    Thanks.

  22. Raju said,

    pls write the progrms.
    1)program for fibnocii series.
    2)Palandrom.
    3)reverse the given nuber.
    4)count the number of words,chars,numbers,special chars in the given input throuh commandline args

  23. Vipin PV said,

    print a semicolon using Cprogram without using a semicolon any where in the C code in ur program!!!!

    void main()
    {
    if(printf(”%c\n”,59))
    {}
    }

  24. vikas kumar said,

    The name of memory model, whose size exceeds 64K is
    (a) huge (b) large (c)medium (d)small
    (e) other

  25. Vipin P. V said,

    Ques: int fun(int arr[], int n)
    In this function the array contains the first “n” natural numbers. Since the natuaral number includes 0 (zero) also , one number will be missing from the array. Find out the missing number in an efficient way. The array will not be in a sorted manner.

  26. MorbidAngel said,

    #
    Sango said,

    >Qwithout using third variable how to swap two variable
    >ans
    >a=a+b;
    >b=a-b;
    >a=a-b;
    >this que was asked to me in my interview

    One more way,
    a = a*b
    b = a/b
    a = a/b

    -cheers,
    SB

    Be careful of type value range when using operator *. For example if a and b are char (1 byte representation), when multiply a by b, you can go past the 256 borde.

    Cheers,
    Morbid Angel

  27. Renganathan E said,

    Q. How do you write a program which produces its own source code as its output?
    Ans:
    char *s=”char *s=%c%s%c;main(){printf(s,34,s,34);}”;
    main(){printf(s,34,s,34);}

  28. Ramya said,

    Q.without using third variable how to swap two variable?
    Ans:
    a= a^b
    b= a^b
    a= a^b

  29. Ramya said,

    Q.Give a one-line C expression to test whether a number is a power of 2.
    Ans: printf(((x&1)==0)?”TRUE”:”FALSE”);

  30. KAUSIK said,

    Q.without using third variable how to swap two variable?
    Ans:
    a= a^b
    b= a^b
    a= a^b
    It is right.ok

    a = a*b
    b = a/b
    a = a/b

    it is worng like that
    if
    b=0;

    then the code gives the result as indefinite value.
    So To my opinion, it is not right.

  31. srikar said,

    without using third variable how to swap two variable?
    ans:
    a=a+b;
    b=a-b;
    a=a-b;

  32. Mayank Shrivastava said,

    Q. > How do you write a program which produces its own source code as its output?

    #include
    void main()
    {
    FILE *fp,*ft;
    char MITM[100];
    fp=fopen(”pro.c”,”r”);
    if(fp==NULL)
    {
    printf(”ERROR”);
    }
    ft=fopen(”data.txt”,”w+”);
    if(ft==NULL)
    {
    printf(”ERROR”);
    }
    while(getc(fp)!=EOF)
    {

    fscanf(fp,”%s”,MITM);
    printf(”%s\n”,MITM);
    fprintf(ft,”%s\n”,MITM);
    }
    }

  33. Fouzina said,

    Q.print numbers till we want without using loops or condition statements like specifically(for,do while, while swiches, if etc)!!!!!
    Ans:
    static int i=0;
    main()
    {
    if (getch()==’n') exit(0);
    printf(”%d\n”,i++);
    main();
    }

  34. Ranjeet said,

    How can I add,subtract,divide,multiply 2-numbers using bitwise operator only??

  35. Valentin Heinitz said,

    Question 1:
    The answer of Manoj Kumar Bana is not what is required.
    This task was given once in Obfuscated C Contest, and the anwer is more trikier.

  36. ErRoR said,

    quest: write a program of fibonacci series.
    ans :
    #include
    main()
    {
    int *fib;
    fib[0]=0;
    fib[1]=1;
    for(int i=2;;i++)
    {
    fib[i]=fib[i-1]+fib[i-2];
    }
    return 0;
    }

  37. M.A.Moscoso said,

    Q1.

    #include “stdafx.h”
    #include

    int main(int argc, char* argv[])
    {
    FILE *fp;
    fp = fopen( argv[0] , “r” ) ;
    while ( feof( fp ) == 0 )
    printf( “%c” , fgetc( fp ) ) ;
    return 0;
    }

    Q13. - use _findfirst()

    struct _finddata_t _dirdata;
    long hFile;
    if( (hFile = _findfirst(”*.*”, &_dirdata)) != -1L)
    {
    printf( “filename: %s” , _dirdata.filename ) ;
    }

    Q14. - How to increase number of open files ?

    In your SystemRoot%\System32
    locate the “config.nt” file
    then modify the environment variable
    files=40
    increase it to your expected
    number of files to be opened, ex.
    files=100

  38. samrat said,

    Write a prgm that prints its own output.

    Soln:
    #include
    #include>process.h>

    void main()
    {
    system(”type filename.cpp”);
    }

    filename is the name of the file in which you have saved ur prgm.

  39. samrat said,

    How to return multiple values frm a fncn?

    Soln:
    Create an array using pointer in the calling fncn.
    Pass this pointer to the called fncn as argument.
    Store the return values in the array.

    #include

    void func(int *ptr)
    {
    ptr[0]=1;
    ptr[1]=2;
    }

    void main()
    {
    int *ptr=new int[2];
    func(ptr);
    cout

  40. Todd said,

    I think if you encounter an interview test with some of these questions, you should just put down the pen and get as far away from that place as possible. Few of these questions help you identify a good programmer; many of the questions actually encourage horrible practice.

    (I would fire any programmer that worked for me that used one of these techniques to switch the value of two variables, excepting some sort of weird processor limitations ).

  41. Muhammed Ashref said,

    Q. > How do you write a program which produces its own source code as its output?
    Ans:
    char*s=”char*s=%c%s%c;main(){printf(s,34,s,34);}”;main(){printf(s,34,s,34);}

Leave a Comment

Name: (Required)

E-mail: (Required)

Comment [use markup for your code]:

Useful interview resources

    C# FAQ×How to Explain a Short Stint On Your Resume to Interviewers - I'm an attorney in the financial-services industry with a good 11-year track record at my previous employer. I've been at a new job for six months and I can see that I've made a mistake. The role and duties aren't what I was told, and my supervisor is an ×Overcoming Resume Red Flags Related to Multiple Job Losses - I've lost three jobs during the past few years due to downsizings and staff reductions. None of these terminations were performance-related. How should I describe my work history on a resume and in interviews so employers understand the situation? ×Collector cars×Weeding out bad employers×Free Flash games×What's your biggest weakness?×VB 2005 FAQ×http://weblogs.asp.net/JobsBlog/×Trim the fat from your resume×Getting help with .NET questions×Nine Steps to Acing a Job Interview - Don't wait until the end to ask good questions. What's the point? You just spent the whole interview telling the person you're right for the job -- it's a little late to be asking questions about the job, right? So ask your questions at the beginning. And ×http://www.sellsbrothers.com/fun/msiview/×How to Pinpoint Accomplishments That Will Make Your Resume Shine - Listing your job responsibilities on a resume may get you on an employer's job-candidate roster, but if you note some solid accomplishments as well, you may be able to make the jump onto a recruiter's short list. Terry Gallagher, president of Battalia Win ×Five Tips for Resumes When You Can List Only One Employer - When you've worked at only one employer for your whole career, writing a resume that wins interviews may be no easy task. The reason: Some hiring managers and recruiters may take a dim view of your single-company job history. While you might see signs of ×How to pass your yearly review - With all the distractions the end of the year brings, it's easy to neglect your day-to-day work. But this might be the most important time of year to focus on your job and your career. Many organizations hold year-end performance reviews, and acing them i ×IT Research×How to dance around the salary-expectation question - Don Sutaria, president and founder of CareerQuest, a staffing and training firm, advises job seekers to avoid offering a solid figure. "Don't answer the question. Say, 'I'll expect the fair market value. Make me an offer and we can discuss it.' Or, 'Maybe ×ASP Free×.NET Framework FAQ×Tech interviews India×Job interview tips×International phone cards - call India, Russia, Canada, and other countries on the cheap ×Promotional products×Zeotek Intl Ltd - Top Listing - web design & top listing ×6 salary secrets×Just One Job? Three Tips For Creating a Broad Resume - You'll likely need to do more than just flesh out your job history to hook hiring managers. They may wonder about your skills, motivation and ability to adjust to a new work environment, says Tom Morgan, vice president of Pencom Systems Inc., an executive ×That was funny×Crash course in interview preparation×Is a Job Move Worth It? - Two years ago, then 28-year-old Valerie French experienced a culture clash when she moved from southern California to Washington, D.C., to work at a major art museum. "I loved my job, but I just hated living there," she says. She found the nation's capita ×C++ Primer×Bjarne Stroustrup's C++ Style and Technique FAQ×What makes a resume scream: Don't hire me×Proper body language for a job interview - No matter what a job candidate might say, using the wrong body language can make them appear disinterested or even deceitful to recruiters. ×Posting Your Resume on YouTube To Stand Out From the Competition - Though the practice is still in its early stages, young job hunters are starting to make a video clip part of their job application, sometimes even posting them on sites like Google Inc.'s YouTube and Google Video. Jobster.com, a Web site for job seekers, ×Seven tips for writing an online profile for LinkedIn, MySpace or Facebook - Haven't posted a MySpace or other Web page? You may yet be pulled into online profiles -- at work. A growing number of employers are encouraging or requiring professionals to post brief biographies on corporate intranet sites as well as companies' consume ×How to apply for a job abroad - Dreaming about a job abroad? Or maybe your spouse is transferring overseas, and you're scouting career options. When applying to employers abroad, you'll need a curriculum vitae (CV) -- the job hunter's document used outside of the U.S. that corresponds t ×Fatal mistakes when starting a new job×How Can I Quell Jitters durting job interviews - I left my company three years ago and now I need to find a new job. The problem is that I become overwhelmed with anxiety during interviews and I miss what's being said. What can I do? ×Cheat sheets×Five Resume Tips for When You Can List Only One Employer - When you've worked at only one employer for your whole career, writing a resume that wins interviews may be no easy task. The reason: Some hiring managers and recruiters may take a dim view of your single-company job history. While you might see signs of ×Stupid interview questions - from Business Week ×Plasma HDTV Prices×Deals on PCs×Mind Readers Wanted? - I started a challenging job. My boss has been vague, and during my first week, she didn't assign anything or say what she expects. She prefers instant messaging to face-to-face meetings, but doesn't even respond quickly to this. How do I succeed with such ×Job tips for new grads×Write your resume in an hour×PerlFunc×6 common interview questions×10 dumbest resume blunders - Having trouble finding a new job? Cheer up. When it comes to resumes, a new survey reveals just how clueless some of your competition is. ×10 mistakes managers make during job interviews - Conducting effective interviews requires a balance of instinct, insight, and some solid preparation. It also helps if you don't make certain blunders, such as monopolizing the conversation, asking leading questions, or applying too much (or too little) pr ×Tips for Creating a Resume That Downplays Job Hopping×When a Would-Be Employer Takes Forever to Make an Offer - Don Masura began interviewing for a job as a career coach for a human-resources consultancy late last year. He endured four rounds of face-to-face talks, then stayed in touch with interested executives. ×Signs you have a great job ... or not×How to handle short-term jobs on your resume×MSDN C# FAQ×How to ace your job interview - 88 tips ×Buy text links - buy and/or sell text link ads ×Job interviews inside Second Life - Some employers are experimenting with Second Life, the online virtual community owned by San Francisco-based Linden Lab, to screen prospective hires. The program allows job seekers to create a computer-generated image to represent themselves -- known as a ×How to Answer These Tricky Interview Questions - Does the thought of going on a job interview cause your palms to sweat and your body to break out in hives? Stop itching; you're not alone. ×Niniane Wong's preparing for a software interview×Small business interview questions×Top paying US jobs×Worried About Getting Laid Off? - Yet a study called "Middle Class in Turmoil," released last year by the Center for American Progress, noted that just 18.3% of middle-class families (defined as those with annual household incomes ranging from $18,500 to $88,030) had accumulated wealth e ×Top resume mistakes - During the initial screening, the employment professional is alert for factors that will immediately eliminate a candidate from further consideration. These knockout factors invariably mean sure death to a person's candidacy. ×Free books×Electronics recycling×Young employees can have a hard time asking for time off - Scheduling a vacation can generate particular angst for younger workers. Eager to make a good impression on co-workers and bosses, many young people fret about using all their vacation time. They haven't figured out what's acceptable and don't want to pus ×CCTV Systems - video surveillance × ID Card Software - photo ID card needs × Surveillance camera - security systems × Phone batteries