s******e 发帖数: 2181 | 1 基本道理清楚,数组作为参数传递给函数的只是数组首元素的地址,函数在需要用到后
面元素时再按照这个地址和数组下标去查找。同时,数组名又正好是数组首元素的地址
,所以在主函数里调用子函数时只需写数组名,那么首元素的地址就传出去了。
我的问题来了,如下例,被调用的函数multiply的形参部分,float *p说明p是一个地
址,这个地址就是传过来的数组首元素的地址。既然p只是地址,那后面的操作
p[0]=2*p[0]
p[1]=2*p[1]
p[2]=2*p[2]
...
不是在把地址乘以2吗,怎么就变成把地址里面的内容乘以2了?用*p[...]来操作是不
是更符合情理?而且p既然是一个地址,怎么就可以写成p[...]了呢,这不变成地址数
组了吗?
虽然实际当中都在这样写,但心中的困惑一直都在。我不是专业马工,求专业马工解惑
并轻拍。
main()
{
float num[]={2.0,3.1,8.6,4.1,7.9};
const int size=sizeof(num)/sizeof(int);
multiply(num,size);
...
}
voi... 阅读全帖 |
|
l***y 发帖数: 4671 | 2 能展开讲讲数组的数组么?一直理解为一维数组名本身就是指针,所以数组的数组本身
就是个一维的指针的数组。
刚测过,memset 和多重循环比起来的确是一个数量级,不开 -O3 时差别大约三倍,打
开 -O3 后 loop 比 memset 更快。但是在我的实际 code 里,memset 比 loop 大概要
快两个数量级 -- 天知道怎么回事。。。
double A[1000][1000] = {{0}};
clock_t t_start = -1;
t_start = clock();
for (int ind = 0; ind < 1000; ind++)
for (int i = 0; i < 1000; i++)
for (int j = 0; j < 1000; j++)
A[i][j] = 0;
t_start = clock() - t_start;
printf("Loop takes %f sec; ", t_start/(double)(CLOCKS_PER_SEC));
t_start = cloc... 阅读全帖 |
|
f*****y 发帖数: 1997 | 3 【 以下文字转载自 Programming 讨论区 】
发信人: fireicy (Light be with you.), 信区: Programming
标 题: 新手问一个多维数组传递给函数的问题
发信站: BBS 未名空间站 (Wed Dec 5 22:17:50 2012, 美东)
请大家看看我的new和delete用的对么? 传给函数的时候,是传指针还是数组名呢?
void main()
{
double **** g;
g = new double *** [m_ydimension];
for(i=0; i< m_ydimension; i++)
{
g[i] = new double ** [m_xdimension];
for (j=0; j< m_xdimension; j++)
{
g[i][j]= new double * [m_zdimension];
for (k=0; k
... 阅读全帖 |
|
y**********0 发帖数: 425 | 4 char str[20];
......
str++错误,但是++str 正确。
这个和整数的不同吗,整数就可以i++和++i,但是数组名就不行? |
|
f*****y 发帖数: 1997 | 5 请大家看看我的new和delete用的对么? 传给函数的时候,是传指针还是数组名呢?
void main()
{
double **** g;
g = new double *** [m_ydimension];
for(i=0; i< m_ydimension; i++)
{
g[i] = new double ** [m_xdimension];
for (j=0; j< m_xdimension; j++)
{
g[i][j]= new double * [m_zdimension];
for (k=0; k
{
g[i][j][k] = new double [19];
for (l=0; l<19; l++)
{
g[i][j][k][l]=0.0;
... 阅读全帖 |
|
z*********n 发帖数: 1451 | 6
这么理解不完全对
先给你们补充几个基础知识吧:
int a[10];
意义:
a[0] 的类型是int
&a[0]的类型是int *
a 的类型是int[10],读作"10个int元素的数组"
&a 的类型是int (*)[10],读作“指向一个有10个int的数组的指针”
值:
a[0] 的值是a中第一个元素的值
&a[0]的值是a中第一个元素的地址
a 的值是a的地址,也等于a中第一个元素地址,规定。
&a 的值是数组a的地址,这个地址(记得我前面小组长的例子)碰巧是a[0]的地址。
所以你说a其实代表a[0]这个不对,这俩类型不一样,只是值碰巧一样。
a永远是这个叫做a的数组,不是只在&a-1中才是这个数组。
关于a-1:
a-1的类型是int *,因为数组名做减法无意义,隐式转化为int *后,减1.就跟你3/2.1
会自动升级成double类似。
另一个基本常识。
int * p
p和p-1之间地址差一个sizeof(int)
char *p
p和p-1之间地址差一个sizeof(char)
数组一样。
int (*p)[10] = &a;
p和p-1之... 阅读全帖 |
|
q**********9 发帖数: 711 | 7 文本文件,第一行存的是变量名,大概~100个(100列),每个变量的类型也不一样, 每一列
里从第二行到最后是数值.
最理想的情况是想: 把第一行的变量名作为数组名,把第二行到结束的数值都存到这个
数组里?
C++里能不能这样做啊?
C++变量名都要提前定义,怎么才能利用读入的字符串动态的生成一个数组名呢和类型呢
? |
|
q**********9 发帖数: 711 | 8 文本文件,第一行存的是变量名,大概~100个(100列),每个变量的类型也不一样, 每一列
里从第二行到最后是数值.
最理想的情况是想: 把第一行的变量名作为数组名,把第二行到结束的数值都存到这个
数组里?
C++里能不能这样做啊?
C++变量名都要提前定义,怎么才能利用读入的字符串动态的生成一个数组名呢和类型呢
? |
|
z*********n 发帖数: 1451 | 9
你不说语言。。假设你说的是C++,
假设你说的动态数组(new 出来的)
那答案是“可能有”。取决于你的编译器,因为这是IB的。
不同编译器会把数组长度或者类似信息存在数组头指针前。为啥可能有呢,因为编译器
未必存的就是exactly的你的数组大小,可能考虑alignment,会多寸点。而且有的编译
器(我不知道哪个)也许不存这个信息,也是符合标准的。
如果是静态数组,如果你手里的那个是个真正的指针而非数组名,那应该就没戏了。因
为数组长度在编译时间存到了符号表里,运行时间不需要额外空间存储它,你也就拿不
到了。 |
|
z*********n 发帖数: 1451 | 10
new
你这问的是两码事。。
你手里有 &a,a是数组名对吧,比如int a[3],a是这么定义的吧?不是int *a = b(b是
一个数组,a是一个指针,指向b数组的某个元素),对吧?
如果你手里那个是&a,这不叫指向首元素的指针。。这叫指向数组的指针。。虽然他俩
值可能一样。
如果你有一个指向数组的指针,你当然可以直接用&a的地址减去 (&a-1)的地址来计算
数组长度了,这本质就是一个sizeof(a)。就跟int * p,对p来说,p和p-1的差值就是
一个sizeof(int)一样。
简而言之,如果你有&a,这么算就是数组大小:(int(&a) - int(&a-1)) / sizeof(int)
和main函数还是其他函数无关,main函数也就是一个特殊点的其他函数而已。 |
|
b***i 发帖数: 3043 | 11 1
type* arr=new type[size];
cout <
结果取决于type的大小 (sizeof(arr[0])),和系统的指针的大小 type*的大小。
比如64位系统,int* arr=new int[10];
sizeof(arr)/sizeof(arr[0])=2,因为指针是8bytes,int是4bytes
再比如32位系统, double* arr=new double[10];
sizeof(arr)/sizeof(arr[0])=0.5也就是显示0(取整)
2
不光stack上,static变量也可以算sizeof。
3
用引用可以保留size,但是不多此一举吗?
void foo(int (&array)[10]) {
std::cout << sizeof(array) << "\n";
}
4
int* arr = new int[10];之后,arr是一个指针。
而int arr[10]是数组,static int arr[10]也是数组,这两个在编译的时候就知道大
小,... 阅读全帖 |
|
j**l 发帖数: 2911 | 12 原来是要利用输出的数组b缓存辅助数组S和T的结果 |
|
f****4 发帖数: 1359 | 13 这道题目是求 N个元素数组中 N-1个元素最大积吧?
求连续元素最大乘积的,能用辅助数组解决么?
O(n)的是记录最大,最小乘积 |
|
l****q 发帖数: 177 | 14 先cft~其实最近job market有点变化,不一定是你的问题
人品差的进好公司的多了去了,不要想这些没有用的
下面说些可能对你有用的:
1。你第一个C程序的算法不够好,这个问题很常规,你在本版可以找到优化解法
2。你第二个C程序有很多问题:首先不要使用a,b这种数组名;任何变量包括数组要初
始化;
hashtable里面key到底是什么,c没有这种数组,就算是有,也得是字符串吧,结束符
也没有;
strcat在工业界多数用snprintf代替。。。。。。
你看,就算算法是对的,这个算法本身很简单,代码质量就成了关键。面试的人那么多
,怎么才能突
出自己。希望对你有帮助。继续努力,一定会越来越好的~~~
char * suggestion(char input[])
{
int len=strlen(input);
for(int i=0;i
{
char a[i];
char b[len-i];
for(int j=0;j
a[j]=input[j];
for(int j=i+1;j
b[j+i |
|
k***e 发帖数: 1931 | 15 第三题答错太多,不应该。感觉基础不扎实,尤其是你说你做了多年的C++。
int a;
int* b[100];
Q: 如果改变a或者b有什么问题?
A: 改变a就是赋值还好,改变b实际上是改变了指向array的指针,可能会有问题。(后
来回想起来当时有点紧张,其实改变b也没有关系,或者应该说具体点,如果没有别的
指针指向array的话,array里面的内容没有变量指向,会有leak)
// b是数组名,数组名是不能被赋值的。
Q: 如果是多个线程要改变a或者b呢?
A: 那就有问题了,会conflict(我知道data race,但是当时没有说这个词)。
Q: a是从内存哪里来的?
A: heap
// a应该是stack上
Q: 那b呢?
A: b指向的array内容也是从heap来的,但是b自己可能来自进程stack吧(后来想我是
不是错了,b是指针跟int差不多也得分配内存空间)。
// b应该也是stack上 |
|
j**l 发帖数: 2911 | 16 You are given an array [a1 ... an] and we have to construct another array [
b1 To bn] where bi = a1 * a2 * ... * an / ai. You are allowed to use only
constant
space and the time complexity is O(n). No divisions are allowed.
解法是引入两个辅助数组
Si = a1 * a2 * ... * ai
Ti = ai * a(i+1) * ... * an
则bi = S[i-1] * T[i+1]
但是有题目要求的O(1)空间和O(n)时间的解法么? |
|
j**l 发帖数: 2911 | 17 假定n = 5,数组下标从1开始。
int iter = 1;
int i;
for (i = 1; i <= 5; i++)
{
b[i] = iter;
iter *= a[i];
}
iter = 1;
for (i = 5; i >= 1; i--)
{
b[i] *= iter;
iter *= a[i];
} |
|
j**l 发帖数: 2911 | 18 写成sizeof(integers)/sizeof(int)还是错的。函数has_num的第一个参数是int *
integers,是把它当指针而不是数组名处理的,这样sizeof(integers)的结果总是4。
如果这样写
int integers[100];
那么sizeof(integers)的结果就是400了
如果是我,就把数组大小用参数传入
bool has_num(int integers[], int n, int target) |
|
h**6 发帖数: 4160 | 19 说实话,这理由还真不好说,一直都是这么用的。
如果v是一个vector,那么应该用 std::sort(v.begin(),v.end()) 进行排序。
作为数组,数组名 v 同时也表示第一个元素的地址,相当于 v.begin(),而 v+1000 则是最后一个元素之后的地址,相当于 v.end() |
|
z*******8 发帖数: 30 | 20 这倒是一个很靠谱的解释哎,因为好像C语言对待数组不就是pointer + offset么
也就是说,反正在编译器中,数组名是一个地址(指针),后面是个偏移量。它也不管
谁是谁,反正两个一加,就行了? |
|
b***y 发帖数: 2799 | 21 ☆─────────────────────────────────────☆
matII (代号9527) 于 (Tue Sep 30 21:46:48 2008) 提到:
看似是个弱智问题。。。
我是这么做的:
double x[100]; //待传递的数组
double *y = x;
这个可以工作,但是使用y会比直接使用x慢好几倍。。。
下面是完整的速度测试:
#include
#include
using namespace std;
const int n = 100;
const int N_Trial = 1000000;
int main(void)
{
double x[n],y[n];
for(int i=0;i
{
x[i] = rand();
y[i] = x[i];
}
double *z=y;
double start,t;
start = clock();
for(int i=0;i |
|
m*******y 发帖数: 68 | 22 还有一个著名的指针和数组名的区别。
可以
我澄 |
|
j**l 发帖数: 2911 | 23 就是把数组
A1, A2, ..., An, B1, B2, ..., Bn
变为
A1, B1, A2, B2, ..., An, Bn
要求O(n)的时间和O(1)空间
CareerCup的书上,给出了O(n^2)和O(n*logn)的两种方法。
先看两个简单例子
n = 8
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
A1 A2 A3 A4 A5 A6 A7 A8 B1 B2 B3 B4 B5 B6 B7 B8
A1 B1 A2 B2 A3 B3 A4 B4 A5 B5 A6 B6 A7 B7 A8 B8
代换环路有四条分支
2->3->5->9->2
4->7->13->10->4
6->11->6
8->15->14->12->8
n = 10
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 B1 B2 B3 B4 B5 B6 B7 B8 B9 B10
A1 B1 A2 B2 A3 B3 A4 |
|
v*********o 发帖数: 5 | 24 在C程序的头文件中,假如有结构体定义如下:
typedef struct FrameworkComponent
{
char Name[256];
char NameIons[256];
} FRAMEWORK_COMPONENT;
extern FRAMEWORK_COMPONENT FrameworkComponent[2];
而在主函数中有:
char arguments[256];
sscanf(arguments,"%s",(char*)&FrameworkComponent[0].Name);
sscanf里面 (char*)&是什么意思?
Name作为字符数组名,本身已经代表地址了,为什么前面还有个取地址符号?
外面那个(char*)是不是强制类型转换?
好像不需要加啊? |
|
h******y 发帖数: 173 | 25 一个哈希数组,在程序运行中自动创建:
$a{b}
其中的a和b希望从别的变量的值中得到,比如当$c="china", $d="heilongjiang"时,
我的这个$a{b}就时$china{heilongjiang}。
我实在是查不到了,教程上没有。老大们请帮忙,谢谢。 |
|
b***y 发帖数: 2799 | 26 ☆─────────────────────────────────────☆
toughgrass (RenZheShenGui) 于 (Sat May 31 17:43:10 2008) 提到:
int a[2][3];
int ** p;
p=a;
编译有警告,说两个类型不一致。假设不管警告信息,p=a后,p[i][j]和a[i][j]一样
吗?内存中两者数据的存储结构完全一样吗?
☆─────────────────────────────────────☆
thrust (WoW 无限期冬眠中) 于 (Sat May 31 17:45:26 2008) 提到:
google C FAQ
section array and pointer
☆─────────────────────────────────────☆
toughgrass (RenZheShenGui) 于 (Sat May 31 19:44:35 2008) 提到:
谢谢!不知道为什么不直接允许变围数数组。
☆────────────────────────────────── |
|
n**********2 发帖数: 648 | 27 【 以下文字转载自 Programming 讨论区 】
发信人: xykkkk (asdf), 信区: Programming
标 题: 老码农冒死揭开行业黑幕:如何编写无法维护的代码(zz)
发信站: BBS 未名空间站 (Fri Nov 28 13:28:27 2014, 美东)
如何编写无法维护的代码
让自己稳拿铁饭碗 ;-)
– Roedy Green(翻译版略有删节)
简介
永远不要(把自己遇到的问题)归因于(他人的)恶意,这恰恰说明了(你自己的)无
能。 — 拿破仑
为了造福大众,在Java编程领域创造就业机会,兄弟我在此传授大师们的秘籍。这些大
师写的代码极其难以维护,后继者就是想对它做最简单的修改都需要花上数年时间。而
且,如果你能对照秘籍潜心修炼,你甚至可以给自己弄个铁饭碗,因为除了你之外,没
人能维护你写的代码。再而且,如果你能练就秘籍中的全部招式,那么连你自己都无法
维护你的代码了!
(伯乐在线配图)
你不想练功过度走火入魔吧。那就不要让你的代码一眼看去就完全无法维护,只要它实
质上是那样就行了。否则,你的代码就有被重写或重构的风险!
总体原则
Quidquid... 阅读全帖 |
|
x****k 发帖数: 2932 | 28 如何编写无法维护的代码
让自己稳拿铁饭碗 ;-)
– Roedy Green(翻译版略有删节)
简介
永远不要(把自己遇到的问题)归因于(他人的)恶意,这恰恰说明了(你自己的)无
能。 — 拿破仑
为了造福大众,在Java编程领域创造就业机会,兄弟我在此传授大师们的秘籍。这些大
师写的代码极其难以维护,后继者就是想对它做最简单的修改都需要花上数年时间。而
且,如果你能对照秘籍潜心修炼,你甚至可以给自己弄个铁饭碗,因为除了你之外,没
人能维护你写的代码。再而且,如果你能练就秘籍中的全部招式,那么连你自己都无法
维护你的代码了!
(伯乐在线配图)
你不想练功过度走火入魔吧。那就不要让你的代码一眼看去就完全无法维护,只要它实
质上是那样就行了。否则,你的代码就有被重写或重构的风险!
总体原则
Quidquid latine dictum sit, altum sonatur.
(随便用拉丁文写点啥都会显得高大上。)
想挫败维护代码的程序员,你必须先明白他的思维方式。他接手了你的庞大程序,没有
时间把它全部读一遍,更别说理解它了。他无非是想快速找到修改代码的位置、改代码
、编译,然后就能交差,... 阅读全帖 |
|
s*****r 发帖数: 43070 | 29 【 以下文字转载自 JobHunting 讨论区 】
发信人: wsclock (精确), 信区: JobHunting
标 题: F家详细面经,有工作经验被拒(超长慎入)
关键字: facebook,interview
发信站: BBS 未名空间站 (Fri Sep 22 20:45:31 2017, 美东)
简单总结:CS博士,奔5了,申请facebook software engineer,不是headquarter。
onsite后第三天收到据信。估计死在system design上。面试简况如下。详细的在后面。
Screening 和final round头两个都是coding interview,都做到了bug free。题目不
难,即使没刷过题,也容易有思路。唯一不足的是,有一个coding写的代码不是时间复
杂度最低的。虽然后来给出了优化的办法,但是没有时间写优化的代码了。
下一个是system design,感觉不太好。其中一个问题是估计要多少个server,我解答
的时候,最大的失误可能是没有问每秒钟多少个transaction,面试官也没给这个条件
。面试官指出... 阅读全帖 |
|
w*****k 发帖数: 20 | 30 简单总结:CS博士,奔5了,申请facebook software engineer,不是headquarter。
onsite后第三天收到据信。估计死在system design上。面试简况如下。详细的在后面。
Screening 和final round头两个都是coding interview,都做到了bug free。题目不
难,即使没刷过题,也容易有思路。唯一不足的是,有一个coding写的代码不是时间复
杂度最低的。虽然后来给出了优化的办法,但是没有时间写优化的代码了。
下一个是system design,感觉不太好。其中一个问题是估计要多少个server,我解答
的时候,最大的失误可能是没有问每秒钟多少个transaction,面试官也没给这个条件
。面试官指出问题后,也没给机会修改。
最后一个人,是career+behavior+coding,coding也是bug free的,其他的问题完全没
感觉。
个人背景:
本人奔5大叔一枚,标准孩奴。不在加州。有名校/名公司情结。可惜,大学在中国30名
以外,来美国读研学校100名以外。毕业时也曾冲刺过Google未果,现在“... 阅读全帖 |
|
l**n 发帖数: 7272 | 31 虽然这里的码工比较少,但是能appreciate coding和programming的朋友也可以看看。
我觉得挺有意思的。
http://blog.sina.com.cn/s/blog_5d90e82f01014k5j.html
我想通过这篇文章解释一下我对 Unix 哲学本质的理解。我虽然指出 Unix 的一个设计
问题,但目的并不是打击人们对 Unix 的兴趣。虽然 Unix 在基础概念上有一个挺严重
的问题,但是经过多年的发展之后,这个问题恐怕已经被各种别的因素所弥补(比如大
量的人力)。但是如果开始正视这个问题,我们也许就可以缓慢的改善系统的结构,从
而使得它用起来更加高效,方便和安全,那又未尝不可。同时也希望这里对 Unix 命令
本质的阐述能帮助人迅速的掌握 Unix,灵活的应用它的潜力,避免它的缺点。
通常所说的“Unix哲学”包括以下三条原则[Mcllroy]:
一个程序只做一件事情,并且把它做好。
程序之间能够协同工作。
程序处理文本流,因为它是一个通用的接口。
这三条原则当中,前两条其实早于 Unix 就已经存在,它们描述的其实是程序设计最... 阅读全帖 |
|
S**I 发帖数: 15689 | 32 ☆─────────────────────────────────────☆
gzou (gzou) 于 (Thu May 12 02:26:35 2011, 美东) 提到:
马上就要G on site了,
求祝福。
下面是从本版收集到的Google的试题,便于大家查询。
申明:有的附带有解释说明的,也来自于本版或者网络,大家自己看, 不保证真确
http://www.mitbbs.com/article_t1/JobHunting/31847453_0_1.html
本人ECE fresh PhD,背景是电路/EDA,跟G业务基本没什么关系
同学内部推荐的,很简单的一次电面就给了onsite
题都不难,但是自己没把握好机会,出了一些小bug。
总的感觉,出错就是硬伤,宁可从最简单的算法写起,也不能出错。
电面:
1,Skip list, http://en.wikipedia.org/wiki/Skip_list
写code实现struct skip_list * find(struct skip_list *head, int value)
2,sorted array... 阅读全帖 |
|
S**I 发帖数: 15689 | 33 ☆─────────────────────────────────────☆
gzou (gzou) 于 (Thu May 12 02:26:35 2011, 美东) 提到:
马上就要G on site了,
求祝福。
下面是从本版收集到的Google的试题,便于大家查询。
申明:有的附带有解释说明的,也来自于本版或者网络,大家自己看, 不保证真确
http://www.mitbbs.com/article_t1/JobHunting/31847453_0_1.html
本人ECE fresh PhD,背景是电路/EDA,跟G业务基本没什么关系
同学内部推荐的,很简单的一次电面就给了onsite
题都不难,但是自己没把握好机会,出了一些小bug。
总的感觉,出错就是硬伤,宁可从最简单的算法写起,也不能出错。
电面:
1,Skip list, http://en.wikipedia.org/wiki/Skip_list
写code实现struct skip_list * find(struct skip_list *head, int value)
2,sorted array... 阅读全帖 |
|
a****a 发帖数: 5763 | 34 随着CPU与GPU合并成技术发展的趋势,苹果开发出了OpenCL框架,能够进行高速并行处
理的能力使OpenCL成为了业界标准,被广泛应用。
最近几年,GPU的发展吸引了很多来自科学计算界人士的目光。GPU有稳定的市场推动力
—公众喜闻乐见的电子游戏产生了源源不断的升级GPU的需求—因此比CPU的更新步伐更
快。从技术上讲,GPU本身就是多核架构,高端显卡往往有五百多个核心,即使低端的
集成GPU也有二三十个核心,所以能够通过并行来高效处理成千上万的线程。同时,对
于科学技算中的浮点计算,GPU往往通过硬件加速使其效率比传统CPU更高,因为图形渲
染等工作基本都是浮点计算。
GPGPU浮出水面
早期的GPU只能执行固定的程序,而不开放给程序员编程。随着时代的发展,图像处理
有时需要对着色器进行编程以实现一些特效,因此需要程序员可以使用GPU的汇编语言
写简单的着色程序。这自然对程序员要求过高,所以一些高阶的着色语言又被GPU厂商
开发出来。比如微软和NVIDIA共同开发的Cg语言,就能为顶点和像素编写专门的着色程
序。这类技术虽然面向图形渲染工作者,却吸引了一小簇科学计算研究者的兴趣。... 阅读全帖 |
|
t*n 发帖数: 14458 | 35 屠城校尉司徒
公元前331年,马其顿军Hetairoi骑兵队的伟大战士NEWAVATAR因为在高嘎美拉之战的
战功,
切罗塔斯的推荐以及他与Hephastion的友谊(当然,已经是过去式),获得亚历山大大帝
的赏
赐,幷被提升为伊拉克总督.
(注:据考证,伊拉克是远古在幼发拉底河畔的小城邦,曾被西方的蛮族美利坚人征服多
年,
在亚力山大扫平美利坚人之后,伊拉克成为马其顿帝国的属邦.1845年,一个英国考古
学家
找到伊拉克古的遗迹,记有NEWAVATAR名字的纸草奇迹般的完好,幷被送到英国,今天由
大英
博物馆收藏).
新任的伊拉克总督出身名门,他的身材健美而匀称,据说他就是Myron掷铁饼者的模特
儿.而
他对哲学的探究与深思,使他成为希腊上层社会的典范.很不幸的,因为美德与英俊的
外貌,
NEWAVATAR总觉得大帝平时看他的眼神,带有一种难以言喻的暧昧…大帝在远征印度之
后,
脾气变的古怪,许多长期追随着他的将军遭到毫无道理的杀害.感谢众神的庇护,在多
年的
杀戮中NEWAVATAR都因为远居偏陲而幸免.但是在公元前323年的一个夏日,大帝的死讯
传到
小亚细亚的时候,NEWAV... 阅读全帖 |
|
p*u 发帖数: 2454 | 36 来自主题: Programming版 - 编程的宗派 总是有人喜欢争论这类问题,到底是“函数式编程”(FP)好,还是“面向对象编程”
(OOP)好。既然现在出了两个帮派,就有人积极地做它们的帮众,互相唾骂和残杀。
然后呢,又出了一个“好好先生帮”,这个帮的人喜欢说,管它什么范式呢,能解决问
题的工具就是好工具!
我个人其实不属于这三帮人中的任何一个。
面向对象编程(Object-Oriented Programming)
如果你看透了表面现象就会发现,其实“面向对象编程”本身没有引入很多新东西。所
谓“面向对象语言”,其实就是经典的“过程式语言”(比如Pascal),加上一点点抽
象能力。所谓“类”和“对象”,基本是过程式语言里面的记录(record,或者叫结构
,structure),它的本质就是一个从名字到数据的“映射表”(map)。你可以用名字
从这个表里面提取相应的数据。比如point.x,就是用名字'x'从记录point里面提取相
应的数据。这比起数组来是一件很方便的事情,因为你不需要记住存放数据的下标。即
使你插入了新的数据成员,仍然可以用原来的名字来访问已有的数据,而不用担心下标
错位的问题。
所谓“对象思想”(区别于“面向... 阅读全帖 |
|
z*********n 发帖数: 1451 | 37
不知道怎么给你解释。。
这俩值是是一样的,但这俩意义不一样,就跟一块内存里的数是0x0000,他可以是short
0,也可以是int 0,也可以是一个复杂的class,里面值为0.数一样,但这个数的类型
可未必一样。
&a是数组的地址,&a[0]是数组首元素地址,他俩值一样,但意义不一样。&a的类型是
指向数组的指针,&a[0]是指向数组元素的指针。
这么比喻一下吧,你们小组有10个人(int a[10]),每个人有自己的名字(地址),但
你们小组本身也得有个名字吧,方便起见,就以你们小组长的名字命名你们小组了。所
以你就会发现,&a(小组名)== &a[0] 小组长名,恒成立。
可以理解吧?继续看,&a[i]-1的意义是,告诉我你前一个组员的名字(地址)?
而&a-1的意义是,告诉我你前一个小组的名字(地址)?
所以当遇到需要考虑类型的运算时,&a和&a[0]就完全不同了。
而&a-1和&a之间就差一整个小组的空间,而&a[0]和&a[0]-1之间差一个组员的空间。
能理解了吧? |
|
g****g 发帖数: 1828 | 38 AWK是一种优良的文本处理工具,Linux及Unix环境中现有的功能最强大的数据处理引擎
之一。这种编程及数据操作语言(其名称得自于它的创始人 阿尔佛雷德·艾侯 、
Peter Weinberger 和 Brian Kernighan 姓氏的首个字母)的最大功能取决于一个人所
拥有的知识。 AWK 提供了极其强大的功能:可以进行正则表达式的匹配,样式装入、
流控制、数学运算符、进程控制语句甚至于内置的变量和函数。它具备了一个完整的语
言所应具有的几乎所有精美特性。实际上 AWK 的确拥有自己的语言: AWK 程序设计语
言, 三位创建者已将它正式定义为“样式扫描和处理语言”。它允许您创建简短的程
序,这些程序读取输入文件、为数据排序、处理数据、对输入执行计算以及生成报表,
还有无数其他的功能。gawk 是 AWK 的 GNU 版本。
最简单地说,AWK 是一种用于处理文本的编程语言工具。AWK 在很多方面类似于 Unix
shell 编程语言,尽管 AWK 具有完全属于其本身的语法。它的设计思想来源于
SNOBOL4 、sed 、Marc Rochkind设计的有效性语言、语言工具 y... 阅读全帖 |
|
d******e 发帖数: 2265 | 39 转帖:
克里斯可以说是天才少年和好学生的代名词,他在2000年本科毕业之后,继续攻读计算
机硕士和博士。但克里斯并不是宅男,学习之余他手捧「龙书」游历世界,成为德智体
美劳全面发展的好学生。之后就是一篇又一篇的发表论文,硕士毕业论文即提出了一套
完整的运行时编译思想,奠定了 LLVM 的发展基础,读博期间 LLVM 编译框架在他的领
导下得到了长足的发展,已经可以基于 GCC 前端编译器的语义分析结果进行编译优化
和代码生成,所以克里斯在2005年毕业的时候已经是业界知名的编译器专家了。
注:很多计算机专业的大学生经常问我在大学里学点什么好,看看克里斯就行了。以目
前的科技信息开放程度,如果你在自己感兴趣的领域里用心耕耘,再加上那么一点点天
分,毕业时成为某一个专有领域的专家应该不是问题。那时就不是你满世界去找工作了
,而是工作满世界来找你!
克里斯毕业的时候正是苹果为了编译器焦头烂额的时候,因为苹果之前的软件产品都依
赖于整条 GCC 编译链,而开源界的这帮大爷并不买苹果的帐,他们不愿意专门为了苹
果公司的要求优化和改进 GCC 代码,所以苹果一怒之下将编译器后端直接替换为 LLVM... 阅读全帖 |
|
G******i 发帖数: 5226 | 40 ☆─────────────────────────────────────☆
lanmao (懒猫) 于 (Sat Jul 9 11:29:24 2011, 美东) 提到:
(坑已经够大了,只管挖不管填不道德,俺自个合集了。)
看了芙蓉的减肥照片和凤姐的励志围脖,也想来跟个励志潮流。满版上都是google
amazon facebook,搞得不是编程熟手不会脑筋急转弯就没好工作似的。 俺来贴个BSO
的Java面经吧,来鼓励一下正在奋斗着的童鞋们。认识俺的都不要说啊,俺那么低调~~~
个人背景:人工智能方向的,学校算top 50吧,9月答辩,读了整整八年的老博士马上
就要新鲜出炉啦!
先低调的说一下amazon经历。amazon给俺发信三四次,要求俺去面试,没理。HR打电话
过来说为啥不理,俺说你们招聘职位太entry level,没兴趣。HR说那给你找个高层次
点的职位。过两天打电话来,说有个高级程序员的活,能不能给我们的hiring manager
一个向你展示我们项目产品的机会。俺心想,说得好听,还不是又要问那种脑筋急转弯
问题,反正答不出,没必要耽误时间。于是很彪... 阅读全帖 |
|
f******h 发帖数: 45 | 41 也找工作了一段时间了,从版上学了很多,上周G家面完了,求个bless。
之前的一些都挂了,还在继续找其他的。等定下来之后一定发面经回报本版。
谢谢大家啦!!
1. http://www.mitbbs.com/article_t/JobHunting/32005597.html
1) Implement a simple calculator (+,-,*,/);
2) Implement "+1" for a large integer;
3) How to match Ads to users;
4) How to extract useful information from a forum webpage (list all
kinds of useful signal you can think of)
5) How to detect the duplicate HTML pages (large scale);
6) Find all the paths between two places on Google map;
7)... 阅读全帖 |
|
h*h 发帖数: 27852 | 42 http://www.yinwang.org/blog-cn/2015/04/03/paradigms
编程的宗派
总是有人喜欢争论这类问题,到底是“函数式编程”(FP)好,还是“面向对象编程”
(OOP)好。既然出了两个帮派,就有人积极地做它们的帮众,互相唾骂和鄙视。然后
呢又出了一个“好好先生帮”,这个帮的人喜欢说,管它什么范式呢,能解决问题的工
具就是好工具!我个人其实不属于这三帮人中的任何一个。
面向对象编程(Object-Oriented Programming)
如果你看透了表面现象就会发现,其实“面向对象编程”本身没有引入很多新东西。所
谓“面向对象语言”,其实就是经典的“过程式语言”(比如Pascal),加上一点抽象
能力。所谓“类”和“对象”,基本是过程式语言里面的记录(record,或者叫结构,
structure),它本质其实是一个从名字到数据的“映射表”(map)。你可以用名字从
这个表里面提取相应的数据。比如point.x,就是用名字x从记录point里面提取相应的
数据。这比起数组来是一件很方便的事情,因为你不需要记住存放数据的下标。即使你
插入了新的数据成... 阅读全帖 |
|
p******9 发帖数: 47 | 43 这题可以转化成 在N个数的环形数组中取不相邻的N/3(上取整),使这些数和最大。我
们可以证明任意这N/3个不相邻的数,必然能对应一种符合原题的取法。
可以用数学归纳法证明这个问题,为了方便,重新定义一下变量名,另M为我会取得到
的比萨数,则N有三种情况,即N=3M - 2 , N = 3M - 1, N = 3M,我们只证明N = 3M -
2这种情况,因为这个时候若能取到,N= 3M - 1或N = 3M 的时候肯定能取到。
(1)基础条件:若M <= 3,我们可以枚举证明以上命题成立。
(2)假设M的时候成立,我们证明M + 1的时候也成立。在M + 1的时候,将会有N = 3
(M + 1) - 2= 3M + 1块比萨。而此时M + 1块比萨之间互不相邻,则在这M + 1块比萨
间将会有M + 2个槽(考虑到比萨时环形的),我们将剩余的2M块比萨放到这M + 2个槽
里,因为M >=3,基于鸽笼原理,必定会有两个比萨落到这个槽里。此时整个序列的形
状如下所示:...PXPXXP... 。我们取定中间的那个P,则对手取定旁边的两个X,形状
变成...PXP...。这个时候问题变... 阅读全帖 |
|
z****e 发帖数: 54598 | 44 作为论据,我找到了中文的翻译,但是那个youtub链接失效了
Go语言之父谈Go:大道至简
时间:2012-07-05 15:40 作者:王然
导读:这篇文章是Google首席工程师、Go语言之父Rob Pike自己整理的6月21日在旧金
山给Go SF的演讲稿。Rob提到:Go语言本是以C为原型,以C++为目标设计,但最终却大
相径庭。值得一提的是,这3门语言都曾当选TIOBE年度语言。
几个礼拜之前我被问到:“对于Go语言,最令你惊讶的是什么?”当时我就明确地给出
了答案:“虽然我希望C++程序员能够使用Go作为替代拼,但实际上大部分Go程序员都
是从Python和Ruby转过来的,其中却少有C++程序员。”
我、Ken以及Robert都曾是C++程序员,在我们编写软件时觉得应该设计一门更适合解决
这个问题的编程语言。奇怪的是,其他程序员似乎却不关心。
今天我将说说是什么让我们决定创造Go语言的,及其出乎意料的结果。这里我谈的更多
的会是Go而不是C++,所以即使你不懂C++也没关系。
主旨可以简单地总结为:你更同意Less is more还是Less is less?
这里有一个... 阅读全帖 |
|
g****t 发帖数: 31659 | 45 《三体III:死神永生》
作者:刘慈欣
申明:本书由奇书网(Www.Qisuu.Com)自网络收集整理制作,仅供预览交流学习使用,版权归原作者和出版社所有,如果喜欢,请支持订阅购买正版.
写在"基石"之前
姚海军
"基石"是个平实的词,不够"炫",却能够准确传达我们对构建中的中国科幻繁华巨厦的情感与信心,因此,我们用它来作为这套原创丛书的名字。
最近十年,是科幻创作飞速发展的十年。王晋康、刘慈欣、何宏伟、韩松等一大批科幻作家发表了大量深受读者喜爱、极具开拓与探索价值的科幻佳作。科幻文学的龙头期刊更是从一本传统的《科幻世界》,发展壮大成为涵盖各个读者层的系列刊物。与此同时,科幻文学的市场环境也有了改善,省会级城市的大型书店里终于有了属于科幻的领地。
仍然有人经常问及中国科幻与美国科幻的差距,但现在的答案已与十年前不同。
在很多作品上(它们不再是那种毫无文学技巧与色彩、想象力拘谨的幼稚故事),这种比较已经变成了人家的牛排之于我们的牛肉。差距是明显的--更准确地说,应该是"差别"--却已经无法再为它们排个名次。口味问题有了实际意义,这正是我们的科幻走向成熟的标志。
与美国科幻的差距,实际上是... 阅读全帖 |
|
d*******8 发帖数: 785 | 46 周三接到了意料之中recruiter的Email据信,为了攒Rp,写下面经
面的是VOD Team的SDE,是版上一个大哥贴的Opening 他帮忙Refer的,多谢这位大哥
HR效率工作超快,第二天就打电话约电话面试,两周两轮
是我开始找工作的第一个电话面试,然后很幸运
拿到了onsite,不过onsite的时候还是失败了,挺可惜的,还挺喜欢西雅图的,
电面一,
自我介绍,一些通常的问题 why amazon等
编程语言问题,对简历上列的语言全部自我评价,说优缺点
C++技术问题, virtual function的实现, OOP的特点。
Python和C++比较的优缺点
技术问题问了一堆,感觉自己答得很罗嗦,教训是一定要答简洁,节省时间给下面的
常见算法题一道,去掉一个数组中重复奇数次的数
hashtable, first sort and scan
写Hashtable的程序,念给他听, 后来他说Hashtable直接用整数当Key空间太大导致
后来的遍历时间比n大得多, 改进, 当时我没想到map到另一个数组里。
电面二
就一道restuarant reservation sy... 阅读全帖 |
|
l****o 发帖数: 924 | 47 (坑已经够大了,只管挖不管填不道德,俺自个合集了。)
看了芙蓉的减肥照片和凤姐的励志围脖,也想来跟个励志潮流。满版上都是google
amazon facebook,搞得不是编程熟手不会脑筋急转弯就没好工作似的。 俺来贴个BSO
的Java面经吧,来鼓励一下正在奋斗着的童鞋们。认识俺的都不要说啊,俺那么低调~~~
个人背景:人工智能方向的,学校算top 50吧,9月答辩,读了整整八年的老博士马上
就要新鲜出炉啦!
先低调的说一下amazon经历。amazon给俺发信三四次,要求俺去面试,没理。HR打电话
过来说为啥不理,俺说你们招聘职位太entry level,没兴趣。HR说那给你找个高层次
点的职位。过两天打电话来,说有个高级程序员的活,能不能给我们的hiring manager
一个向你展示我们项目产品的机会。俺心想,说得好听,还不是又要问那种脑筋急转弯
问题,反正答不出,没必要耽误时间。于是很彪悍的告诉她,不想搬家去西雅图。 HR
说俺们给钱relocate,俺表示钱不能收买俺,不能改变俺对农村生活的热爱。于是HR终
于祝俺好运啦。于是总结教训:凡是招程序员滴,统统挂电话。知人者... 阅读全帖 |
|
s*******f 发帖数: 1114 | 48 日子久了,忘了一些。搅拌到一起,无公司名。有些板上看见过的不列了,呵呵
注意编码,很难得算法不咋会考。
1.实现BigInt类。实现 ‘+’ 即可。
2.国际象棋棋盘中两个queen之间最短路径(queen只能斜着走),返回步数即可。就是
一个queen最少几步能走到另一个queen
3.class SortedArrays{
listofSortedArrays;
public:
bool HasNext();
bool Next();
}
1,3 ..
2,5 ..
4,5 ...
--> 1,2,3,4,5,5....
4. // return a^b
// pow(2, 3) = 8;
// pow(2, -3); = 1 / 8;
// if a < 0;
double pow(double a, int b){
5. binary search in sorted, but head-in-middle array. [15, 16, 1, 3, 9, 11,
13]
6. 1boogle game. give a boogle and a word, retu... 阅读全帖 |
|
|
w********g 发帖数: 106 | 50 店面之前首先了online test,所以店面只问了简历上的内容,问得很详细,包括具体
实现某一功能时用了哪些系统调用、函数名是什么、参数怎么设置、某些用到的系统文
件的具体路径,总之就是要确定我真的做过这些project。
店面前要求的online test有三道题,共90分钟,和leetcode类似要求编译运行,但是
不提供test case,只能自己输入,所以真的考验自己是否细心,比如overflow、空输
入之类的。
第一题不难:
给一个整形数组存储的是下一跳的位置,就像指针一样。
比如A[0]=2 A[1]=3 A[2]=1 A[3]=1 A[4]=3
就这么跳:0 2 1 3 1 3...,于是找到了一个长度为2的由1、3这两个元素组成loop。
题目就是输入这样的数组,返回loop长度。
要求O(N) time,O(1) space,其中N是数组长度。
第二题极简单:
给一个表示16进制数的字符串,返回这个数的二进制表示中有几个1.
例如,输入16进制字符串“1E”,它的二进制为“11110”,所以返回4。
要求O(N) time,O(1) space,其中N是字... 阅读全帖 |
|