Adobe Interview QuestionSoftware Engineer / Developers
Interview Type: In-Person
Well, if you are doing it via interfaces you could publish them, so you expose method signatures and a return type , and not the logic itself.
Some possible ways:
1. Create web services (REST/SOAP)
2. Create binaries and send them. Example- when using java, create class files and expose API in form of interface etc and release them
3. You may also like to obfuscate the source code and release so that the end-consumer find it tough enough to get the source.
in java e.g. the source probably needed to be complied into a stream of byte codes, you can also provide api that facilitate the use of your code without others getting to know the detail of your implementation, and those abstract apis also need to be compiled so that others would not be able to read them without decompiling it. This is essentially true for every java libs, you can decompile them the decompiled version seems to be messy which can merely expose few details.
The better approach will be thru providing web services, your code will act like a black box.
Create a shared library .a in C/C++ and just keep the header files implementing the API. This way the customer has access to the API from the header files, and the source code is not available as it is a compiled library. The customer can us the shared lib by just linking it to their source code during compilation
This can be done by implementing the concept of web service. Web Service is nothing but transferring the data from one vendor to other using xml. We can see the implementation of web service in the ATM machine where we can withdraw money from any ATM cards and while doing so our money get debited from our own account(through other bank ATM). to learn more about web service- ProXap.in August 21, 2014