几个把我整惨的面试题



几个把我整惨的面试题

关于"精读APUE"方面问挂的几个

fork和vfork的区别

vfork跟fork一样创建子进程,但是并不将父进程的地址空间完全复制到子进程中,因为子进程会立即调用exec或exit,子进借用的父进行的地址空间。另一个区别是:vfork保证子进程先运行,在它调用exec或exit之后父进程才可能被调度运行。

exit和_exit的区别

exit是标准c函数,会先执行一些清理,包括执行各终止处理程序,关闭标准I/O流等,然后才进入内核。_exit是一个系统调用,直接进入到内核

孤儿进程和僵尸进程

一个已终止,但其父进程尚未对其进行善后处理(获取终止子进程的有关信息,释放它仍占用的资源)的进程被称为僵尸进程

一个父进程已终止的进程叫做孤儿进程。当一个进程终止时它会向父进程发SIGCHLD信号,父进程可以忽略该信号,或者提供一个信号处理函数。系统默认动作是忽略这个信号。

多线程中的信号处理

信号处理是进程中所有线程共享的。当线程修改了某个信号相关的处理行为以后,所有线程都必须共享这个处理行为的改变。每个线程有自己的信号屏蔽字,单个线程可以阻止某些信号。

进程中的信号是递送到单个线程的。如果信号与硬件故障或计时器超时相关,该信号就被发送到引起该事件的线程中去,而其它的信号则被发送到任意一个线程。

算法方面

洗牌算法的概率证明

从后往前扫一遍,每个词有1/(n-i)的概率跟前面某个数发生交换。
最后一个留到原位置的概率是1/n,然后到前面某个位置的概率也是(1-1/n)/(n-1)=1/n的概率
第二个,它到最后一个位置的情况是,最后一个跟它换的。概率是1/n。然后它如果没跟第一个换,则它到后面每个格式的概率是相等的,是(1-1/n)/(n-1)
第i个,它到后面格子的情况是它跟后面某个发生了交换,到后面每个格子的概率是1/n。到原位置或前面的概率是(1-i/n)/i=1/n

兄弟单词

给一个单词,求它的兄弟单词,这个兄弟单词必须在词典中是存在的。这个设计某个特殊的hash,保证一个单词和它的兄弟单词都会被hash到同一个桶中。例如,将单词按字母从小到大重新排序后作为其key,比如bad的key为abd,good的key为dgoo。

支持min操作的栈,要求O(1)复杂度

维护二个栈,一个正常栈,另一个栈pop时同步pop,push时维护栈顶始终是最小的

从一个单词变为另一个单词之一

比如说acfed,abfd,每次可以插入,或修改,或删除一个单词,问最少多少步可以变为第二个单词

从一个单词变为另一个单词之二

两个长度一样长的单词,比如banana和pandor,每步可以变其中一个字符.有个词典,要求每步变化得到的中间状态词都是词典中的词,问最少经过多少次变换?

最大子数组和的动态规划的推导过程

b[i] = max{b[i-1]+a[i], a[i]}

二维的最大子数组和

把从i到j之间的行,叠加成一个数组,然后就可以跟一维最大子数组和一样的方式处理了

等找完工作稍微有点时间之后,我好好再读一遍APUE


Read full article from 几个把我整惨的面试题


No comments:

Post a Comment

Labels

Algorithm (219) Lucene (130) LeetCode (97) Database (36) Data Structure (33) text mining (28) Solr (27) java (27) Mathematical Algorithm (26) Difficult Algorithm (25) Logic Thinking (23) Puzzles (23) Bit Algorithms (22) Math (21) List (20) Dynamic Programming (19) Linux (19) Tree (18) Machine Learning (15) EPI (11) Queue (11) Smart Algorithm (11) Operating System (9) Java Basic (8) Recursive Algorithm (8) Stack (8) Eclipse (7) Scala (7) Tika (7) J2EE (6) Monitoring (6) Trie (6) Concurrency (5) Geometry Algorithm (5) Greedy Algorithm (5) Mahout (5) MySQL (5) xpost (5) C (4) Interview (4) Vi (4) regular expression (4) to-do (4) C++ (3) Chrome (3) Divide and Conquer (3) Graph Algorithm (3) Permutation (3) Powershell (3) Random (3) Segment Tree (3) UIMA (3) Union-Find (3) Video (3) Virtualization (3) Windows (3) XML (3) Advanced Data Structure (2) Android (2) Bash (2) Classic Algorithm (2) Debugging (2) Design Pattern (2) Google (2) Hadoop (2) Java Collections (2) Markov Chains (2) Probabilities (2) Shell (2) Site (2) Web Development (2) Workplace (2) angularjs (2) .Net (1) Amazon Interview (1) Android Studio (1) Array (1) Boilerpipe (1) Book Notes (1) ChromeOS (1) Chromebook (1) Codility (1) Desgin (1) Design (1) Divide and Conqure (1) GAE (1) Google Interview (1) Great Stuff (1) Hash (1) High Tech Companies (1) Improving (1) LifeTips (1) Maven (1) Network (1) Performance (1) Programming (1) Resources (1) Sampling (1) Sed (1) Smart Thinking (1) Sort (1) Spark (1) Stanford NLP (1) System Design (1) Trove (1) VIP (1) tools (1)

Popular Posts