开发工程师面试的秘密( 整理自 Export C Programming )
开发工程师面试的秘密
因为打算转战linux平台,所以一直在配置自己喜欢的linux操作系统。同时在看那本《C 专家编程》,这本书主要是针对ANSI C 介绍的,所以和Linux(Unix )渊源比较深了,但是还是把自己看的睡着了。所以决定倒着看,首先是附录中的关于开发工程师面试的秘密,收获颇多,就整理一下自己学到的知识,同时也给自己充充电。
1.懂硬件的程序员是很危险的
为什么这么说呢,因为硬件是编程最终体现的平台,一个程序员如果还掌握硬件的知识,那么她就可以为所欲为了。将程序稍微烧在一个芯片上,就可以实现很多的功能,可以各种恶搞,还有追妹子。所以建议程序员学习一些硬件的知识,将自己的编程知识运用在硬件上面。
2.面试的侧重点(硅谷程序员面试)
“一个典型的面试会持续一整天,包括连续与六七个不同的工程师进行一个小时交流——在这个过程中,你必须让所有的人都信服你的确有能力加入到开发小组中来”。面试的问题不仅仅看中的他们对于问题做什么样的反应,更重要的是怎样做出的反应。面试的人是不是对于一个问题深思熟虑,还是将自己心中的答案脱口而出,面试这在说明自己的论据的时候是否具有足够的说服力。对于自己的答案的明显的策略固执己见还是思维灵活,完善自己的答案。 所以在面试的时候,要认真的思考,想一下面试在考察什么知识,凡事多思考一下,不要让面试管觉的你浮躁的样子或者是没有思考,而是在背答案之类的。
3.检测链表循环
这一个问题是很经典的问题,如果是面试着直接的给出答案的话,就会让面试官感觉这个人是之前看到过这个题目,面试的效果就显示不出来。其实一般人最直接的想法就是遍历链表,并且做一个标记,如果在遍历过程中遇到自己做的标记的话,那么就是出现了循环。 进一步的思考的话,就是在不允许修改链表,这些数据是只读的,那么我们就不能够使用这一种方法了,而且要考虑一下时间和空间复杂度的问题。 最好的答案就是使用两个指针,从头开始,第一个指针每一次移动一个单位,第二个指针每一次移动两个单位,如果在遍历的过程中出现p1 == p2 ,也就是两个指针指向的是同一个对象的话,那么说明存在循环。
4.深层次的理解代码
这里想要说是关于运算符的操作,参考下面的几个语句: x= x+1; ++x; x++; x+=1; 最终的结果都是将x加1,但是在实际的编程中还是需要考虑一下上下文环境,会有不同的答案。 对于++操作,我们希望开发人员能够站在编译器的角度去思考:++x表示的是取x的地址,增加它的内容,然后把结果保存在寄存器中;x++表示的是取x的地址,把它的内容装入到寄存器,然后增加内存中的x的值。
arr[--j + i++] += --y;
这一句代码翻译成为简单的C++代码:
--y;
--j;
arr[j+i] = arr[j+i] + y;
i++;
5.库函数的调用和系统调用的区别
函数调用是调用函数库中的一个程序,并且相同的编译器版本,函数库是相同的,同时有些函数是自己实现的;库函数调用则是和用户程序相关的,是在用户的地址空间上执行;运行时间是用户时间,该过程属于过程调用,开销比较小. 系统调用与操作系统相关很大,不同的操作系统系统调用不同,它调用的是系统内核的服务;系统调用是操作系统的一个进入点,在内核的地址空间执行;运行状态是在内核态,属于系统的运行时间,同时需要切换到内核上下文环境,开销比较大;
6.文件描述符和文件指针
文件描述符在形式上就是一个非负证书,实际上它是一个索引,指向内核为每一个进程所维护的该进程打开文件记录的表格。当程序中打开一现有的文件或者是创建一个新文件,内核都会向进程返回一个文件描述符。文件描述符的概念一般只是在linux unix操作系统中有。文件描述符的有效范围是0~OPEN_MAX,一般来说一个进程最多可以打开64个文件,一些操作系统则没有限制,取决于内存的大小,int的大小,以及系统管理的设定。文件描述符是有无符号的整形的表示的句柄,进程使用它来标识打开的文件,文件描述符与包括相关信息的文件对象相关联,这些信息被称为文件的上下文。对于每一个进程,操作系统内核在u_block结构中维护文件表述符表,所有的文件描述符都在该表中建立索引。
文件指针保存的是一个FILE 结构体的地址,FILE 是系统定义的一个结构,该结构含有文件名、文件状态、文件当前位置等等信息。
7.如何判断一个变量是有符号的还是没有符号
有无符号和是不是负数是完全不同的概念。而且不同的编译平台也不相同。下面采取的方式是针对二进制底层的判断。
#define ISUNSIGNED(a) (a>=0 && ~a >=0)
因为所有的无符号的数据都不可能是小于0 的,对该变量取反,原变量和取反之后的结果均是大于0 的,说明它是无符号的。
还可以采用一种方式就是
#define ISUNSIGNED(type) ((type)0 - 1> 0)
8.从文件中随即提取一个字符
该问题的最常见的回答方式就是遍历文件,计算文件的大小,然后在该范围内随即产生一个数字,提取该字符即可;但是只允许顺序遍历文件一次的话,怎么做 ? 就是在遍历文件的时候就选择一个随即的字符,读入一个字符,怎么随机,也只是这一个字符,然后在读取一个字符,在这两个字符之间随机选取,一次执行下去。
附今日总结:
打造自己喜欢的Ubuntu 12.04 (Office & 输入法)
今天在新学生活动中心学习一些linux上面的知识,因为喜欢金山的WPS,而且金山也有专门的deb安装包,所以就在Ubuntu12.04上面安装了WPS,打开的时候,因为缺少字体,就找到一些字体安装包,果然是可以使用的。不过问题又出现了,就是输入大太不好使用了,因为输入狂总是在左下角落里,体现效果太差了,搜了一下解决办法,果然是比较好,竟然有linux版本的搜狗和谷歌输入法,就安装上了这个比较习惯的输入法,重启电脑之后就可以了。
还有就是今天感觉还不错,上午的时候,偶然发现了一个比较好的框架WordPress,之前听MH同学提起过,不以为意。今天看到一个网站也是用它做的,就向试一下,果然是很豪华的样子。入门应该比较简单,需要在自己的电脑上安装好PHP5.5 + MySQL + Apache环境,然后就是在取WordPress官方网站下载该框架,直接解压到服务器的根目录即可。打开网站的时候,会一步步的提示你,创建数据库表格,不过数据库是不可以创建的,所以我们需要之前在数据库中创建一个对应的数据库,或者是使用已经存在的数据库。
今天就先到这里了!
追寻梦的飞飞
2013.04.06 于广州
开发工程师面试的秘密( 整理自 Export C Programming )的更多相关文章
- Java高级开发工程师面试笔记
最近在复习面试相关的知识点,然后做笔记,后期(大概在2018.02.01)会分享给大家,尽自己最大的努力做到最好,还希望到时候大家能给予建议和补充 ----------------2018.03.05 ...
- web开发前端面试知识点目录整理
web开发前端面试知识点目录整理 基本功考察 关于Html 1. html语义化标签的理解; 结构化的理解; 能否写出简洁的html结构; SEO优化 2. h5中新增的属性; 如自定义属性data, ...
- 珍藏版 Python 开发工程师面试试题
珍藏版 Python 开发工程师面试试题 说明:不拿到几家公司的offer,那就是卑鄙的浪费 一.Python_基础语法 1.可变与不可变类型: 2.浅拷贝与深拷贝的实现方式.区别:deepcopy如 ...
- JAVA开发工程师面试(1)
我已经有很长一段时间没有更新博客了,难道是博主我变懒惰了吗?哎,这样可不行啊,我还有好多知识要学习,要和大家分享.以后我需要更加努力,改掉自己的惰性.本人文采不怎么样,只能是把自己所想的说出来,想和大 ...
- [转] Web前端开发工程师常用技术网站整理
1.常用工具相关 有道云笔记 http://note.youdao.com/signIn/index.html 36镇-最好用的共享收藏夹 http://www.36zhen.com/ 浏览器同步测试 ...
- Web前端开发工程师常用技术网站整理
1.常用工具相关 有道云笔记 http://note.youdao.com/signIn/index.html 36镇-最好用的共享收藏夹 http://www.36zhen.com/ 浏览器同步测试 ...
- 大数据开发工程师面试《一》Shopee虾皮技术面
一.项目问题 1 做了哪些项目2 使用什么技术3 哪个是你主导的项目,一共开发多少个接口,项目多长时间,数据库有多少个表 二.技术问题 1 用自己擅长的语言实现非递归单链表反转 现场手写2 Hadoo ...
- Java开发工程师面试-基础
JDK.JRE.JVM有什么区别? JDK:Java Development Kit 针对Java程序员的产品 JRE:Java Runtime Environment是运行Java的环境集合 JVM ...
- Java高级开发工程师面试考纲 转
转 http://www.sanesee.com/article/java-engineer-interview-of-content-tree 1 Java基础 1.1 Collection和Map ...
随机推荐
- 图片浏览(CATransition)转场动画
Main.storyboard ViewController.m // // ViewController.m // 8A04.图片浏览(转场动画) // // Created by huan ...
- <转>C Runtime Library(MSVCRT)来历
(转载)C Runtime Library(MSVCRT)来历 msvcrt.dll (名称:Microsoft C Runtime Library)提供了printf,malloc,strcpy ...
- oracle exists
公司项目中有用到exists,感觉挺有用的,拷贝一些感念的东西. “exists”和“in”的效率问题 1) select * from T1 where exists(select 1 from T ...
- React Native填坑之旅--Navigation篇
React Native的导航有两种,一种是iOS和Android通用的叫做Navigator,一种是支持iOS的叫做NavigatorIOS.我们这里只讨论通用的Navigator.会了Naviga ...
- 使用sklearn优雅地进行数据挖掘
目录 1 使用sklearn进行数据挖掘 1.1 数据挖掘的步骤 1.2 数据初貌 1.3 关键技术2 并行处理 2.1 整体并行处理 2.2 部分并行处理3 流水线处理4 自动化调参5 持久化6 回 ...
- (多重背包+记录路径)Charlie's Change (poj 1787)
http://poj.org/problem?id=1787 描述 Charlie is a driver of Advanced Cargo Movement, Ltd. Charlie dri ...
- Linux 常用工具小结:(5) lftp工具使用
Linux 常用工具小结:(1) lftp工具使用. 这里会按照一些比较常用的功能列出,并举一个具体的例子逐一解释功能. 通常使用ftp过程是登陆ftp,浏览ftp内容,下载ftp文件,或者上传ftp ...
- IntelliLock
IntelliLock的使用说明: http://blog.csdn.net/gnicky/article/details/20737107 http://download.csdn.net/deta ...
- NYOJ 536 开心的mdd(DP)
开心的mdd 时间限制:1000 ms | 内存限制:65535 KB 难度:3 描述 himdd有一天闲着无聊,随手拿了一本书,随手翻到一页,上面描述了一个神奇的问题,貌似是一个和矩阵有关的 ...
- Ubuntu16.04使用阿里云镜像安装Mongodb
一.概述 近日要在新的Ubuntu16.04系统上安装MongoDB,某度结果后直接从Mongo官网直接获得3.2版本的下载链接,结果在下载时发觉速度慢的可怜.迫于无奈,只能找国内的镜像下载.切换国内 ...