2011.9.27到某公司的Android面试(C/java/Android)题目总结(转)
9.27 面试
1.写一个C语言的宏,求两个传入的数的绝对值的和。
①#define add(a,b) (((a) < 0? -(a) : (a)) + ((b) < 0? -(b) : (b)))
②
#define abs(a) ( (a) < 0? -(a) : (a) )
#define add(a,b) (abs(a) + abs(b))
2.用java或者C倒置字符串"abcd" -> "dcba"
①
//把第一个放到最后
/*void firstToLast(char str[],int len){
if(len <= 1) return;
char temp = str[0];
int i;
for(i = 1; i < len; i++){
str[i - 1] = str[i];
}
str[len - 1] = temp;
}
void reverseString(char str[],int len){
int i = 0;
for(;i < len -1; i++){
firstToLast(str,len - i);
}
}*/
②
void reverseString(char str[],int len){
int i,j;
char temp;
for(i = 0;i < len; i++){
temp = str[0];
for(j = 1; j < len - i;j ++){
str[j - 1] = str[j];
}
str[len - i - 1] = temp;
}
}
3. C语言中 a++ 与 ++a 的区别(很多相关的填空题)
4. C语言的逗号表达式的求值顺序问题(在a++,与++a问题中有多个逗号表达式)
---->区别:a++先使用a原来的值,使用后在让a的值自加一, ++a先将a的值加一,然后使用改变后的a的值。
例如:
int inc(int a)
{
printf("intc : %d\n",a);
return a++;
}
main函数中:
int a = 1;
printf("%d\n",a++); //1
printf("%d\n",++a); // 3
printf("%d,%d\n",a,inc(a++)); //4,3
printf("%d\n",a); //4
printf("%d\n",inc(++a));//5
//printf("%d\n",++3); //语法错误
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~