Come si impara C in due giorni (se conosco già il C ++)? [chiuso]

1

Ho programmato in C ++ per alcuni anni, e ho fatto un progetto scolastico o due in C (oltre a diverse altre lingue). Tuttavia, non conosco molto bene C. Ho un colloquio di programmazione in due giorni e ho appena realizzato che questa intervista sarà in C.

Come mi avvicino a questo? Come imparo C abbastanza bene per avere successo in un colloquio di programmazione? Questo lavoro non è alla ricerca di un "esperto di C" o qualcosa del genere, quindi penso che saranno in qualche modo comprensivi se spiego che non ho programmato molto in C. Hanno semplicemente scelto di ospitare le loro interviste in C.

L'acquisto e la lettura di un libro di testo non è fattibile, quindi le mie risorse dovranno essere su Internet.

    
posta Casey Patton 18.10.2011 - 07:16
fonte

5 risposte

3

Ottieni un compilatore C, scrivi del codice. Hai sentito che C ++ è C con le classi? Basta rilasciare classi e modelli, quindi scrivere una serie di codice e verificare se la sintassi funziona o meno. Potresti voler vedere la sorgente C reale per vedere alcune chiamate alle librerie che fanno da quando stl non sarà disponibile (ma sono sicuro che hai sentito memcpy, strlen, sprintf e così via) così probabilmente conosci abbastanza "C" come è .

Ricorda anche l'operatore, l'overloading delle funzioni non esiste e nessun riferimento.

    
risposta data 18.10.2011 - 07:51
fonte
14

Se ospitano le interviste in C, vogliono qualcuno che conosca C, non qualcuno che possa stipare un test. Se sei veramente serio su questo, prendi una copia di K & R. (co-scritto dal ragazzo che in realtà ha progettato la lingua, possa riposare in pace) Non riesco a pensare a un modo più veloce per imparare C.

In alternativa, puoi provare questo

    
risposta data 18.10.2011 - 07:30
fonte
1

Se intervistassi e ponessi una domanda per un colloquio in C, ci sarebbero due cose che mi aspetterei di differenziare i buoni candidati da quelli cattivi.

  1. È possibile progettare un algoritmo ragionevole e quindi scrivere il codice che riflette tale design? Il 90% dei candidati fallisce in questa fase.
  2. Puoi gestire la memoria, pensare di liberare memoria, usare efficacemente i puntatori ecc.

(1) eliminerebbe i non-speratori dal processo di reclutamento. (2) differirebbe il meglio dal bene e influenzerebbe i livelli salariali.

Sì, c'è molto più della semplice gestione della memoria in C, ma altre cose di C come i puntatori di funzione, la scrittura di codice pedante per catturare gli errori ecc. ma nella mia esperienza se un programmatore può capire correttamente i puntatori allora può essere insegnato altre cose in C rapidamente e indolore sul lavoro. Cercare di insegnare i puntatori a qualcuno è un gioco d'azzardo. Potrebbero non cogliere mai il concetto.

    
risposta data 18.10.2011 - 11:45
fonte
0

Il libro K & R è una buona raccomandazione. Dal momento che non volevi un libro per una risposta:

Converti un programma un po 'complesso che hai scritto e capito in C. Più grande e complesso è, meglio è - si tratta di ciò che hai a disposizione per la conversione e il tempo che hai a disposizione.

Conosci già la sintassi, gli operatori, ecc. - rimuovi solo le funzionalità che non sono disponibili e convertili nell'equivalente C. Potresti avere alcune domande, quindi cerca (e chiedi, se necessario) su StackOverflow.

La scelta di un progetto che hai scritto ti consente di concentrarti sull'attività, non sul programma.

    
risposta data 18.10.2011 - 07:51
fonte
0

Concentrati sulle differenze. C e C ++ usano gli stessi bit e amp; pezzi, ma ci sono alcune cose in cui differiscono:

  • Disciplina di digitazione - C ++ utilizza una strong digitazione statica, C ha una digitazione statica debole. Di conseguenza, puoi (e spesso devi) lanciare molto più liberamente in C di quanto faresti in C ++.
  • diversa sintassi della struttura - la dichiarazione e la definizione delle strutture funzionano in modo diverso in C rispetto a C ++; assicurati di sapere come utilizzare correttamente le strutture in C
  • no STL : ciò significa che devi eseguire l'I / O in modalità C ( printf e la sua famiglia), oltre alla gestione delle stringhe. Assicurati di conoscere le funzioni libc più importanti per la gestione delle stringhe e per la conversione tra stringhe e tipi numerici.
  • malloc / free vs. new / delete : abituati a utilizzare malloc e free correttamente, nonché gli idiomi tipici per inizializzare le strutture allocate nell'heap.
  • nessun riferimento - dove passeresti per riferimento in C ++, utilizzerai il pass-by-pointer in C

Ci sono più differenze (come mancanza di spazi dei nomi, strong dipendenza dal preprocessore, incapsulamento a livello di modulo, ecc.), ma dubito che tu stia programmando in un ambito in cui sono rilevanti.

In ogni caso, dalla descrizione del lavoro sembra che siano più interessati alla parte dell'algoritmo (come ti avvicini a un particolare problema) rispetto alla parte del linguaggio (quanto bene conosci la sintassi del linguaggio X). C è probabilmente considerato il comune denominatore di tutti i linguaggi di programmazione e il candidato più probabile per qualsiasi programmatore serio a cui abbia avuto qualche esposizione.

    
risposta data 18.10.2011 - 11:24
fonte

Leggi altre domande sui tag