创新工场2013年笔面试(四)

1.给定一个整数序列及一个整数,找出序列中所有整数配对,配对的两数之和为该整数

方法一:快排+比较

指向首尾两指针,计算它们的和与给定的整数比较,分三种情况移动指针,需要遍历整个序列,时间复杂度O(nlgn+n)

方法二:hash表

遍历序列Xn,对于Xi (1)在hash表中查找Xn-Xi,若找到则配对 (2)若未找到,将Xi存入hash表。(当有Xn-Xi中存在于序列中,则能查找到Xi)。

求更高效的方法!!

2.(1)对于两个排好序的数组数列,找出相同的元素(2)是如果上面的序列没有排序。

(1)很简单,直接比较或者折半查找。(2)可用hash表,假设序列分别为A[n],B[m],我们取长度较小的简历hash表,假设m<n,利用B[m]见hash表,查找A[i]是否存在于B[m]中

求其他解决方法!!

ArvonZhang:二叉排序树,可将某个数组先构建一个BSTree,然后另一个数组去查找是否值存在于构建的BSTree中

3. 用c怎样实现c++中的虚函数

结构体+函数指针,只需将函数指针指向不同的即可,但函数指针的赋值在main函数中。

参考http://blog.csdn.net/shallwake/article/details/4943365,这篇blog写的很棒,我模仿自己写了下,简化了许多,要学习还是看上面blog的代码比较靠谱。

我自己模仿写的代码

typedef void(*SHOW)(void);
/*基类*/
typedef struct _Shape{
	SHOW pshow;
}Shape,*pShape;
/*派生类*/
typedef struct _Circle{
	Shape p;
	int r;
}Circle,*pCircle;
/*派生类*/
typedef struct _Square{
	Shape p;
	int h;
}Square, *pSquare;
/*重写虚函数*/
void showCircle()
{
	printf("showCircle\n");
}
/*重写虚函数*/
void showSquare()
{
	printf("showSquare\n");
}
/*多态,只需要传递基类指针*/
void virtualfun(pShape p)
{
	p->pshow();
}

void main()
{
	Circle circle;
	Square square;
	//虚函数初始化  
	circle.p.pshow=showCircle;
	square.p.pshow=showSquare;
	//用基类指针指向派生类 
	pShape p1=(pShape)&circle;
	pShape p2=(pShape)&square;
	//传递基类指针,体现多态。
	virtualfun(p1);
	virtualfun(p2);
}


4.求问unix下如何实现后台挂

多谢lgg201指教

本题答案如下:kill -s SIGSTOP pid

lgg201回复如下

编写如下php脚本

<?php
while ( $i ++ < 100 ) {
	error_log('msg: ' . $i . chr(10), 3, '/tmp/t.log');
	sleep(1);
}

保存为t.php

1. 开启终端t1, 在t1中执行:
$ php t.php
2. 开启终端t2, 在t2中执行:
tail -f /tmp/t.log
输出如下:
msg: 1
msg: 2
msg: 3
msg: 4
3. 在t2中键入: Ctrl + c, 终止tail的查看进程.
4. 在t2中执行
$ ps -ef | grep t.php
输出:
501 7050 4703 0 5:38PM ttys006 0:00.02 /usr/local/php-5.3.5-fpm/bin/php.dSYM t.php
5. 在t2中向t.php的进程发送SIGSTOP信号, 执行:
$ kill -s SIGSTOP 7050
6. 在t2中用tail再次查看日志文件
tail -f /tmp/t.log
本次不会持续打印消息
7. 在t2中发送SIGCONT信号给t.php进程
$ kill -s SIGCONT 7050
8. 再次用tail查看日志文件
tail -f /tmp/t.log
此时又开始持续打印

关于这些可以查看手册
man bash
查找JOB CONTROL一节

相关信号:http://www.linuxso.com/command/kill_3.html

5.求问nohup ./command 2>&1 >./log.txt & 会存在什么问题,不知道这个命令记得对不对,谢谢

你可能感兴趣的:(c,面试,struct,unix,Blog)