Archiv für die Kategorie ‘computer’

Interviewfragen – Einleitung

Freitag, 09. April 2010

So, da ich ja inzwischen festangestellter Softwareentwickler bin und auf dem Weg dorthin auch einige Vorstellungsgespräche hatte, möchte ich hier eine neue Reihe starten, in der ich Programmierfragen erläutere, die in solchen technischen Jobinterviews vorkommen können. Die Fragen sind üblicherweise nicht übermäßig kompliziert und es gibt im Allgemeinen auch nicht die korrekte Lösung, aber es gibt durchaus bessere und schlechtere Lösungen. Eine mögliche Lösung werde ich immer im Eintrag selber erwähnen, andere Ideen sind in den Kommentaren gerne willkommen.

Woher ich die Fragen habe? Teilweise aus eigenen Vorstellungsgesprächen, teilweise von StackOverflow, teilweise auf anderen Seiten gefunden. Wo immer möglich werde ich die Quelle angeben.

Auch wenn hin und wieder mal Fragen zu einer speziellen Programmiersprache dabei sein werden, sollten die Fragen üblicherweise ohne Kenntnis einer speziellen Sprache zu beantworten sein. Meine Lösungsvorschläge werde ich auch in Pseudocode niederschreiben.

Ich hoffe, ich kann mit dieser Serie dem einen oder der anderen helfen und/oder Freude bereiten.

Gedanken über Google

Sonntag, 08. November 2009

Kristian Köhntopp hat in seinem Blog mal wieder einen äußerst interessanten Beitrag veröffentlicht: Das Google-Missverständnis. Insbesondere folgender Satz hat mich fasziniert:

Es gibt noch etwas anderes, das mich sehr fasziniert, und das ist die geringe Zahl von beobachtbaren Fuck-Ups bei Google.

Denn genau das habe ich letzte Woche, als Google die Javascript Closure Tools freigegeben hat, auch gedacht: Ich kenne diese Tools noch nicht, aber sie sind von Google, sie sind bestimmt gut! Google Mail, Maps, Documents, Groups – alles Beispiele von Software, die es für einen Großteil der Internetnutzer “einfach richtig” macht.

Nur so ein Gedanke.

Nokia E-Serie – Schein oder Sein?

Montag, 15. Juni 2009

Ich habe mir zum Vergleich ein Nokia E71 und ein Nokia E75 geholt.
Das E75 kam zuerst an – Tastaturbeleuchtung defekt, direkt wieder eingeschickt. Der große Gewinner hierbei: DHL. Ansonsten fühlte es sich aber ganz gut an, zumindest soweit ich das in 10 Minuten beurteilen konnte.

Dann bekam ich mein E71. Weil es ja schon was älter ist, habe ich es erstmal an den Nokia Software Updater angeschlossen. Eine neue Firmware war tatsächlich verfügbar, also runtergeladen, installiert. Daten gehen dabei verloren, macht aber ja nix, ist ja noch nichts drauf. (Wieso braucht man für ein Firmware-Update eigentlich eine SIM-Karte?) Update wird laut Anzeige erfolgreich abgeschlossen, das Telefon startet neu – und verlangt die Eingabe des Sperrcodes. Hm, Handbuch angeschaut – 12345. “Fehlerhafter Code”. WTF? Nochmal – wieder falsch. Google angeschmissen – ich bin nicht allein: http://discussions.europe.nokia.com/discussions/board/message?board.id=swupdate&thread.id=48243

[UPDATE]

Der korrekte Sperrcode lautet 0000

Die Eingabe ist nur nicht ganz so einfach, da nach Eingabe der vierten Null im Display nur noch 000 angezeigt wird, denn das scheint in einigen Ländern eine Notrufnummer zu sein. Zur Lösung muss man einmal die Löschen-Taste drücken, dann kann man die vierte Null normal eingeben, das wird dann vom Handy akzeptiert.

Trotz gefundener Lösung ein inakzeptables Verhalten!

[UPDATE ENDE]

Bilanz: Zweimal Nokia E-Serie, zweimal keine 30 Minuten Funktionalität genießen können. Mein Sony Ericsson K800i läuft übrigens seit über drei Jahren problemlos …

Fedora 11 ist da!

Dienstag, 09. Juni 2009

Endlich, nach nur einigen kleinen Verzögerungen, ist es endlich erschienen: Fedora 11, genannt “Leonidas”!

Was alles neu ist, das lässt sich den Release Notes entnehmen. Technischere Details zu einigen der Neuigkeiten kann man auch auf der “Feature List”-Seite im Wiki nachlesen.

Wem jetzt schon das Wasser im Munde zusammenläuft, oder wer Fedora oder Linux allgemein einfach mal ausprobieren möchte, der sollte nicht zögern, sich dieses Meisterstück herunterzuladen, am Besten per BitTorrent (ja, das ist auch in Deutschland legal …): http://torrent.fedoraproject.org/

Damit tut ihr gleichzeitig auch was gutes und helft, Fedora zu verteilen, ohne dass die Download-Server überlastet werden.

Viel Spaß!

Und ich kümmer mich mal weiter um meine Diplomarbeit …

Der kleine Unterschied

Donnerstag, 08. Januar 2009

Man beachte den kleinen Unterschied zwischen PHP und Python, der mich einige Zeit erstmal gekostet hat:

PHP:

<?php
class T {
    var $x = array();
}
$a = new T();
array_push($a->x, 1);
echo count($a-&gt;x); // <strong>Ausgabe: 1</strong>
$b = new T();
array_push($b-&gt;x, 2);
echo count($b-&gt;x); // <strong>Ausgabe: 1</strong>

Dagegen ein nahezu äquivalentes Konstrukt in Python:

class T:
&nbsp;&nbsp;&nbsp;&nbsp;x = []
a = T()
a.x.append(1)
print len(a.x) # <strong>Ausgabe: 1</strong>
b = T()
b.x.append(2)
print len(b.x) # <strong>Ausgabe: 2</strong>

Die Erklärung findet sich übrigens hier:

Objects have individuality, and multiple names (in multiple scopes) can be bound to the same object. This is known as aliasing in other languages. This is usually not appreciated on a first glance at Python, and can be safely ignored when dealing with immutable basic types (numbers, strings, tuples). However, aliasing has an (intended!) effect on the semantics of Python code involving mutable objects such as lists, dictionaries, and most types representing entities outside the program (files, windows, etc.).

Safe ‘n’ Simple

Dienstag, 11. November 2008

Security is hard

Sicherheit ist nicht einfach. Dies gilt allgemein, aber auch und insbesondere für Linux-Systeme. Denn wenn man – wie man es machen sollte – die /tmp-Partition mit noexec einbindet, so kommt es des öfteren vor, dass aptitude bzw. apt-get Probleme haben, da auf /tmp Skripte ausgeführt werden sollen.

Das hat mich bei der Aktualisierung eben wieder angenervt, weswegen ich endlich mal nach einer Lösung gesucht habe. Gefunden habe ich http://www.debian-administration.org/articles/57 , hier ganz kurz die Punchline des Artikels:

Add the following to the file /etc/apt/apt.conf:

DPkg::Pre-Install-Pkgs {"mount -o remount,exec /tmp";};
DPkg::Post-Invoke {"mount -o remount /tmp";};

Ich hoffe, das funktioniert auch wirklich. Beim nächsten Update werde ich es erfahren.

Global Solutions!?

Montag, 29. September 2008

Acting Globally – that usually means, that a company acts everywhere, right? Well, what about they act for everybody? Shouldn’t that be a part of calling oneself “global”? If so, at least one big, German company doesn’t get it:

PS: The site does not really work with Firefox, either. That’s why I tried Opera in the first place.

Snake-o-matic

Donnerstag, 07. August 2008

During my final diploma thesis, I need to collect a lot of data. Something like website-scraping, though a little bit different. Anyway, I needed (and still do need) some scripting language. I could have taken Perl, PHP, Ruby, … But no, there is also a snake present – so I decided to use Python as my language of choice.

So far, I did not regret this choice for a single second! Although I never used it before, I can now, after only a few hours of actual scripting write complete scripts without having to test them a single time. It makes scripting real fun again.

Oh, and gnuplot-py makes it even visually attractive for non-programmers ;-)

Good news in linux-land

Samstag, 07. Juni 2008

I have already mentioned earlier, that my new laptop and Fedora (back then in version 8) work quite flawlessly together. Things are always on a move, and since that other post, Fedora has been moving forward and it was released in version 9, codename Sulphur.

The change delivered several improvements. For me particularily useful are the new error-message-system of evolution (no annoying pop-ups anymore), Firefox 3 (still in beta/rc, though) and the better suspend/resume stuff. There is no more need for any quirks and the overall suspend/hibernate/resume-feeling is way better than it was ever before. In addition with another new Sulphur-feature, namely packageKit, it gave me an absolute astonishing, albeit small experience:

I usually only use the hibernate or suspend functionality and do not shut down the computer. This works without any problems – except when you install a new kernel and put the laptop to sleep afterwards. While rebooting, the latest kernel is chosen. The laptop tries to boot and sees, that there is a suspend-image which it tries to load. As the suspend image was created by the old kernel, the boot process might (and for me it did) fail. This messup may result in an undefined state and destroy data (well, again, that is what happened to me).

Say hello to PackageKit. After installing a new kernel, the suspend will fail. Although there is no notice of why it fails, it must be due to the new kernel. Small detail, but this little feature protects the user and its data because the inconsistency I described above can not happen (so easily)!

Linux on the desktop, way to go!

April, 1st

Dienstag, 01. April 2008

It’s joke time.

This came on the fedora-devel list this morning:

Subject: rawhide special report: 20080401 changes

Date: Tue, 1 Apr 2008 12:08:17 +0000 (UTC) (14:08 CEST)

New package apt
Advanced front-end for dpkg

New package dpkg
Package maintenance system for Debian

Removed package rpm

Removed package yum

Updated Packages:

[...]

Funny :-)